varchar 與 char vachar2的區別
阿新 • • 發佈:2018-12-18
區別:
- varchar 與 char 區別 Varchar 對每個英文 (ASCII) 字元都佔用 2 個位元組 , 對一個漢字也只佔用兩個位元組 . 而 char 對英文 (ASCII) 字元佔用 1 個位元組 , 對一個漢字佔用 2 個位元組 .
2 . CHAR 的長度是固定的,而 VARCHAR2 的長度是可以變化的, 比如,儲存字串“ abc" ,對於 CHAR (20) ,表示你儲存的字元將佔 20 個位元組 ( 包括 17 個空字元 ) ,而同樣的 VARCHAR2 (20) 則只佔用 3 個位元組的長度, 20 只是最大值,當你儲存的字元小於 20 時,按實際長度儲存。
- 由於 char 是以固定長度的,所以它的速度會比 varchar 快得多 ! 但程式處理起來要麻煩一點,要用 trim 之類的函式把兩邊的空格去掉 ! CHAR 的效率比 VARCHAR2 的效率稍高。
4 .目前 VARCHAR 是 VARCHAR2 的同義詞。工業標準的 VARCHAR 型別可以儲存空字串,但是 oracle 不這樣做,儘管它保留以後這樣做的權利。 Oracle 自己開發了一個數據型別 VARCHAR2 ,這個型別不是一個標準的 VARCHAR ,它將在資料庫中 varchar 列可以儲存空字串的特性改為儲存 NULL 值。如果你想有向後相容的能力, Oracle 建議使用 VARCHAR2 而不是 VARCHAR 。
何時該用 CHAR ,何時該用 varchar2 ? CHAR 與 VARCHAR2 是一對矛盾的統一體,兩者是互補的關係 . VARCHAR2 比 CHAR 節省空間,在效率上比 CHAR 會稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們在資料庫設計上常說的‘以空間換效率’。
VARCHAR2 雖然比 CHAR 節省空間,但是如果一個 VARCHAR2 列經常被修改,而且每次被修改的資料的長度不同,這會引起‘行遷移’ (Row Migration) 現象,而這造成多餘的 I/O ,是資料庫設計和調整中要盡力避免的,在這種情況下用 CHAR 代替 VARCHAR2 會更好一些。