字元型別的字元儲存與位元組儲存
Oracle中儲存字元常用的資料型別有char和varchar2
其中
char 是定長,最小為1,最大為2000
varchar2 是變長,最小為1,最大為4000
在使用過程中,常見的定義
col char(n) --位元組儲存的預設形式
col char(n byte) --位元組儲存
col char(n char) --字元儲存
col varchar2(n) --位元組儲存的預設形式
col varchar2(n byte) --位元組儲存
col varchar2(n char) --字元儲存
位元組儲存表示最長能儲存n個位元組的字串。
字元儲存表示最長能儲存n個字元的字串。
例:
建立表t_char
create table t_char
(col_a char(5)
,col_b char(5 char)
);
插入記錄
SQL> insert into t_char values ('aaaa','aaaa');
1 row inserted
檢視錶兩個欄位的位元組長度和字元長度
SQL> select length(col_a),length(col_b) from t_char;
LENGTH(COL_A) LENGTH(COL_B)
------------- -------------
5 5
SQL> select lengthb(col_a),lengthb(col_b) from t_char;
LENGTHB(COL_A) LENGTHB(COL_B)
-------------- --------------
5 5
char是定長,所以佔用的位元組和字元一定是固定的。
插入第二條記錄
SQL> insert into t_char values ('bbb11','bbb11');
1 row inserted
由於使用的是字母和數字組合的值,即滿足5個位元組又滿足5個字元,能插入,看不出兩個欄位的區別。
下面使用中文,如果值為'資料庫',會出現什麼情況?
insert into t_char values ('資料庫','資料庫')
ORA-12899: 列 "SCOTT"."T_CHAR"."COL_A" 的值太大 (實際值: 6, 最大值: 5)
報錯!col_a char(5) 位元組長度最大為5,三個中文字元6位元組超長。
所以col_a char(5) 位元組長度定義 與 col_b char(5 char) 字元長度定義的區別如下
SQL> insert into t_char values ('資料1','我愛資料庫');
1 row inserted
檢視插入值的字元長度
SQL> select length('資料1'),length('我愛資料庫') from dual;
LENGTH('資料1') LENGTH('我愛資料庫')
--------------- --------------------
3 5
檢視插入值的位元組長度
SQL> select lengthb('資料1'),lengthb('我愛資料庫') from dual;
LENGTHB('資料1') LENGTHB('我愛資料庫')
---------------- ---------------------
5 10
col_b char(5 char)表示最長能儲存5個字元,包括中文字元,如果5個字元都是中文字元,位元組長度佔10個位元組(字符集GBK)
varchar型別的定義也是類似的,不再贅述
其中
char 是定長,最小為1,最大為2000
varchar2 是變長,最小為1,最大為4000
在使用過程中,常見的定義
col char(n) --位元組儲存的預設形式
col char(n byte) --位元組儲存
col char(n char) --字元儲存
col varchar2(n) --位元組儲存的預設形式
col varchar2(n byte) --位元組儲存
col varchar2(n char) --字元儲存
位元組儲存表示最長能儲存n個位元組的字串。
字元儲存表示最長能儲存n個字元的字串。
例:
建立表t_char
create table t_char
(col_a char(5)
,col_b char(5 char)
);
插入記錄
SQL> insert into t_char values ('aaaa','aaaa');
1 row inserted
檢視錶兩個欄位的位元組長度和字元長度
SQL> select length(col_a),length(col_b) from t_char;
LENGTH(COL_A) LENGTH(COL_B)
------------- -------------
5 5
SQL> select lengthb(col_a),lengthb(col_b) from t_char;
LENGTHB(COL_A) LENGTHB(COL_B)
-------------- --------------
5 5
char是定長,所以佔用的位元組和字元一定是固定的。
插入第二條記錄
SQL> insert into t_char values ('bbb11','bbb11');
1 row inserted
由於使用的是字母和數字組合的值,即滿足5個位元組又滿足5個字元,能插入,看不出兩個欄位的區別。
下面使用中文,如果值為'資料庫',會出現什麼情況?
insert into t_char values ('資料庫','資料庫')
ORA-12899: 列 "SCOTT"."T_CHAR"."COL_A" 的值太大 (實際值: 6, 最大值: 5)
報錯!col_a char(5) 位元組長度最大為5,三個中文字元6位元組超長。
所以col_a char(5) 位元組長度定義 與 col_b char(5 char) 字元長度定義的區別如下
SQL> insert into t_char values ('資料1','我愛資料庫');
1 row inserted
檢視插入值的字元長度
SQL> select length('資料1'),length('我愛資料庫') from dual;
LENGTH('資料1') LENGTH('我愛資料庫')
--------------- --------------------
3 5
檢視插入值的位元組長度
SQL> select lengthb('資料1'),lengthb('我愛資料庫') from dual;
LENGTHB('資料1') LENGTHB('我愛資料庫')
---------------- ---------------------
5 10
col_b char(5 char)表示最長能儲存5個字元,包括中文字元,如果5個字元都是中文字元,位元組長度佔10個位元組(字符集GBK)
varchar型別的定義也是類似的,不再贅述
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28929558/viewspace-1169961/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 彙編——位元組單元和字單元儲存雙字元字元
- 建立NFS型別的儲存NFS型別
- 二叉樹的儲存(輸入一串字元)與遍歷二叉樹字元
- Python字元與位元組新編Python字元
- Block型別及儲存區域BloC型別
- 儲存過程與儲存函式儲存過程儲存函式
- JavaScript中的資料型別-儲存差別JavaScript資料型別
- mysql之json型別與文字儲存json的優勢MySqlJSON型別
- 塊儲存 檔案儲存 物件儲存物件
- Unirech:阿里雲國際站的物件儲存oss與自建儲存的區別阿里物件
- SAP EWM - 儲存型別 - 入庫控制型別
- mysql儲存日期使用什麼型別MySql型別
- redis-4.資料儲存型別Redis型別
- 雲原生儲存詳解:容器儲存與 K8s 儲存卷K8S
- 儲存—物件儲存_Minio物件
- 儲存新圖譜:DNA儲存的邊界與天地
- [20191219]oracle timestamp資料型別的儲存.txtOracle資料型別
- 杉巖:淺談物件儲存和塊儲存區別物件
- 行式儲存 列式儲存
- 分散式儲存與傳統網路儲存系統相比有哪些區別分散式
- MySQL儲存引擎--MyISAM與InnoDB區別MySql儲存引擎
- 物件儲存、檔案儲存、塊儲存這三者之間有什麼區別?物件
- InnoDB儲存引擎鎖機制(二、 鎖的型別)儲存引擎型別
- Mybatis讀取和儲存json型別的資料MyBatisJSON型別
- 使用django-treebeard實現樹型別儲存與編輯Django型別
- Redis(一):基本資料型別與底層儲存結構Redis資料型別
- Oracle基本資料型別儲存格式淺析——RAW型別Oracle資料型別
- 資料儲存--檔案儲存
- 聚焦資料時代新儲存需求,浪潮儲存的新儲存之道
- C#引用型別和值型別在堆、棧中的儲存C#型別
- 超融合、軟體定義儲存、分散式儲存以及Server SAN的區別與聯絡分散式Server
- 作用域、連結屬性和儲存型別型別
- 物件儲存 vs 檔案儲存 vs 塊儲存,選哪個?物件
- Golang的值型別和引用型別的範圍、儲存區域、區別Golang型別
- 儲存
- 突破etcd限制 位元組自研K8s儲存KubeBrainK8SAI
- 位元組跳動極高可用 KV 儲存系統詳解
- MySQL 字元型別MySql字元型別
- MyISAM與innoDB儲存引擎有何差別儲存引擎