国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

探究MySQL中varchar的定義長度

2024-07-24 13:07:26
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了探究MySQL中varchar的定義長度,文中主要對其長度究竟是字節還是字符做出了相關實驗,需要的朋友可以參考下

UTF8字符集下:

 

 
  1. SQL>create table test(id int auto_increment,name varchar(10),primary key(id)); 
  2. SQL>insert into test values(null,'1234567890'); 
  3. Query OK, 1 row affected (0.00 sec) 
  4. SQL>insert into test values(null,'一二三四五六七八九十'); 
  5. Query OK, 1 row affected (0.00 sec) 
  6. SQL>insert into test values(null,'abcdefghig'); 
  7. Query OK, 1 row affected (0.01 sec) 
  8. SQL>insert into test values(null,12345678901); 
  9. ERROR 1406 (22001): Data too long for column 'name' at row 1 
  10. SQL>insert into test values(null,'一二三四五六七八九十1'); 
  11. ERROR 1406 (22001): Data too long for column 'name' at row 1 
  12. SQL>insert into test values(null,'一二三四五六七八九十一'); 
  13. ERROR 1406 (22001): Data too long for column 'name' at row 1 
  14. SQL>select id,name,length(name),char_length(namefrom test; 
  15.  
  16. +----+--------------------------------+--------------+-------------------+ 
  17. | id | name | length(name) | char_length(name) | 
  18. +----+--------------------------------+--------------+-------------------+ 
  19. | 1 | 1234567890 | 10 | 10 | 
  20. | 2 | 一二三四五六七八九十 | 30 | 10 | 
  21. | 3 | abcdefghig | 10 | 10 | 
  22. +----+--------------------------------+--------------+-------------------+ 
  23. rows in set (0.00 sec) 

GBK字符集下:

 

 
  1. SQL>create table test(id int auto_increment,name varchar(10),primary key(id)); 
  2. SQL>insert into test values(null,'1234567890'); 
  3. Query OK, 1 row affected (0.00 sec) 
  4. SQL>insert into test values(null,'一二三四五六七八九十'); 
  5. Query OK, 1 row affected (0.00 sec) 
  6. SQL>insert into test values(null,'abcdefghig'); 
  7. Query OK, 1 row affected (0.01 sec) 
  8. SQL>insert into test values(null,12345678901); 
  9. ERROR 1406 (22001): Data too long for column 'name' at row 1 
  10. SQL>insert into test values(null,'一二三四五六七八九十1'); 
  11. ERROR 1406 (22001): Data too long for column 'name' at row 1 
  12. SQL>insert into test values(null,'一二三四五六七八九十一'); 
  13. ERROR 1406 (22001): Data too long for column 'name' at row 1 
  14. SQL>select id,name,length(name),char_length(namefrom test; 
  15.  
  16. +----+----------------------+--------------+-------------------+ 
  17. | id | name | length(name) | char_length(name) | 
  18. +----+----------------------+--------------+-------------------+ 
  19. | 1 | 1234567890 | 10 | 10 | 
  20. | 2 | 一二三四五六七八九十 | 20 | 10 | 
  21. | 3 | abcdefghig | 10 | 10 | 
  22. +----+----------------------+--------------+-------------------+ 
  23. rows in set (0.00 sec) 

由此可見,varchar定義的長度的單位是字符,哪怕是1個多字節字符也是1個字符,如中文和英文字母都被當作1個字符來對待。

那么varchar能夠定義的最大長度是多少呢?這個和你當前所使用的字符集有關。拋開字符,其最大長度為65535字節(這是最大行大小,由所有列共享),而放在不同的字符集下,能夠定義的最大長度就會有所不同,如UTF8下是21845。據說MySQL5中varchar的長度也為字符,而MySQL4中的則為字節,未經證實,感興趣的有環境可以自己測下。

順便補充一下,char數據類型定義的長度也為字符,其最大長度為255。

 

 
  1. SQL>create table test(id int auto_increment,name char(5),primary key(id)); 
  2. Query OK, 0 rows affected (0.09 sec) 
  3. SQL>insert into test values(null,'123'); 
  4. Query OK, 1 row affected (0.00 sec) 
  5. SQL>insert into test values(null,'12345'); 
  6. Query OK, 1 row affected (0.00 sec) 
  7. SQL>insert into test values(null,'一二三'); 
  8. Query OK, 1 row affected (0.00 sec) 
  9. SQL>insert into test values(null,'一二三四五'); 
  10. Query OK, 1 row affected (0.00 sec) 
  11. SQL>insert into test values(null,123456); 
  12. ERROR 1406 (22001): Data too long for column 'name' at row 1 
  13. SQL>insert into test values(null,'一二三四五1'); 
  14. ERROR 1406 (22001): Data too long for column 'name' at row 1 
  15. SQL>select id,name,length(name),char_length(namefrom test; 
  16.  
  17. +----+-----------------+--------------+-------------------+ 
  18. | id | name | length(name) | char_length(name) | 
  19. +----+-----------------+--------------+-------------------+ 
  20. | 1 | 123 | 3 | 3 | 
  21. | 2 | 12345 | 5 | 5 | 
  22. | 3 | 一二三 | 9 | 3 | 
  23. | 4 | 一二三四五 | 15 | 5 | 
  24. +----+-----------------+--------------+-------------------+ 
  25. rows in set (0.00 sec) 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 内乡县| 平顺县| 镇江市| 徐水县| 沅江市| 宁陕县| 昌黎县| 武强县| 临夏县| 鸡泽县| 西乌珠穆沁旗| 高碑店市| 友谊县| 正镶白旗| 松江区| 吉林省| 库车县| 军事| 泽普县| 禹州市| 昌吉市| 临安市| 和静县| 遂川县| 区。| 综艺| 京山县| 黔西| 民权县| 龙山县| 柘城县| 油尖旺区| 应用必备| 水富县| 固始县| 华安县| 五莲县| 云浮市| 剑河县| 南溪县| 浮山县|