SQL char、varchar、nvarchar、varchar2, nvarchar2 位元組 字元 漢字
阿新 • • 發佈:2019-02-04
一個字元佔多少位元組取決於資料庫字符集編碼和欄位型別。
mysql、oracle 欄位的長度一般是指位元組,也有例外(如:oracle的nvarchar,varchar(size char))
Mysql:char、varchar位元組、字元
- 編碼:
- GBK : 一個漢字 = 2個位元組,英文是一個位元組;
- UTF-8:一個漢字 = 3個位元組,英文是一個位元組;
- 查詢位元組或字元數函式
- 位元組:length() ;
- 字元:char_length() ;
- eg: select length(‘A打豆豆’), lengthb(‘A打豆豆’) from dual;
位元組 length(‘A打豆豆’) 字元 char_length(‘A打豆豆’) 字符集編碼 7 4 gbk 10 4 utf8
Oracle:char、varchar、nvarchar、varchar2, nvarchar2 位元組 字元 漢字
- 編碼:select userenv(‘language’) from dual。
- SIMPLIFIED CHINESE_CHINA.ZHS16GBK :一個漢字佔用兩個位元組
- SIMPLIFIED CHINESE_CHINA.AL32UTF8:一個漢字佔用三個位元組
- 查詢位元組或字元數函式。
- 位元組:lengthb() ;
- 字元:length();
- eg: select lengthb(‘A打豆豆’), length(‘A打豆豆’) from dual;
位元組 lengthb(‘A打豆豆’) 字元 length(‘A打豆豆’) 字符集編碼 7 4 gbk 10 4 utf8 - char 與 varchar:
- char為定長,輸入的字元小於定義時,它會再後面補空值;
- varchar為儲存變長資料,型別的實際長度是它的值的實際長度+1,這一個位元組用於儲存實際使用了多大的長度。
- varchar(size) 與 varchar2(size):
- 資料庫預設 size 表示位元組;
- varchar可以儲存空字串;而varchar2將在資料庫中varchar列可以儲存空字串的特性改為儲存NULL值
- varchar(size) 與 nvarchar(size):
- nvarchar不受資料庫字符集的影響。size單位是字元,而且不管是漢字還是字母,每個字元的長度都是2個位元組。
- varchar(size biyte) 與 varchar2(size char):
- varchar(size byte) : 最大長度size個位元組;
- varchar(size char):最大長度size個字元(中英文即可)。
型別 | 長度 | 單位 | 說明 |
---|---|---|---|
char | 定長 | byte | 輸入的字元小於定義時,它會再後面補空值; |
varchar(size byte) | 變長 | byte | varchar為儲存變長資料,型別的實際長度是它的值的實際長度+1,這一個位元組用於儲存實際使用了多大的長度。 |
varchar(size char) | 變長 | char | size表示字元個數(中英文即可) |
varchar2 | 變長 | byte | 儲存空字串改為儲存NULL值 |
nvarchar | 變長 | char | 不受資料庫字符集的影響。size單位是字元,而且不管是漢字還是字母,每個字元的長度都是2個位元組。 |
- ASCII對應的字元都和英文佔位元組類似。 ↩