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

首頁 > 數據庫 > MySQL > 正文

探究MySQL中varchar的定義長度

2024-07-24 12:45:59
字體:
來源:轉載
供稿:網友

UTF8字符集下:

SQL>create table test(id int auto_increment,name varchar(10),primary key(id));SQL>insert into test values(null,'1234567890');Query OK, 1 row affected (0.00 sec)SQL>insert into test values(null,'一二三四五六七八九十');Query OK, 1 row affected (0.00 sec)SQL>insert into test values(null,'abcdefghig');Query OK, 1 row affected (0.01 sec)SQL>insert into test values(null,12345678901);ERROR 1406 (22001): Data too long for column 'name' at row 1SQL>insert into test values(null,'一二三四五六七八九十1');ERROR 1406 (22001): Data too long for column 'name' at row 1SQL>insert into test values(null,'一二三四五六七八九十一');ERROR 1406 (22001): Data too long for column 'name' at row 1SQL>select id,name,length(name),char_length(name) from test;+----+--------------------------------+--------------+-------------------+ | id | name | length(name) | char_length(name) | +----+--------------------------------+--------------+-------------------+ | 1 | 1234567890 | 10 | 10 | | 2 | 一二三四五六七八九十 | 30 | 10 | | 3 | abcdefghig | 10 | 10 | +----+--------------------------------+--------------+-------------------+ 3 rows in set (0.00 sec)

   GBK字符集下:

SQL>create table test(id int auto_increment,name varchar(10),primary key(id));SQL>insert into test values(null,'1234567890');Query OK, 1 row affected (0.00 sec)SQL>insert into test values(null,'一二三四五六七八九十');Query OK, 1 row affected (0.00 sec)SQL>insert into test values(null,'abcdefghig');Query OK, 1 row affected (0.01 sec)SQL>insert into test values(null,12345678901);ERROR 1406 (22001): Data too long for column 'name' at row 1SQL>insert into test values(null,'一二三四五六七八九十1');ERROR 1406 (22001): Data too long for column 'name' at row 1SQL>insert into test values(null,'一二三四五六七八九十一');ERROR 1406 (22001): Data too long for column 'name' at row 1SQL>select id,name,length(name),char_length(name) from test;+----+----------------------+--------------+-------------------+ | id | name | length(name) | char_length(name) | +----+----------------------+--------------+-------------------+ | 1 | 1234567890 | 10 | 10 | | 2 | 一二三四五六七八九十 | 20 | 10 | | 3 | abcdefghig | 10 | 10 | +----+----------------------+--------------+-------------------+ 3 rows in set (0.00 sec)

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杨浦区| 富民县| 浪卡子县| 双辽市| 沧州市| 内江市| 阳江市| 青阳县| 桐乡市| 贵州省| 徐州市| 南澳县| 舒兰市| 岳阳县| 福泉市| 胶州市| 宿松县| 吉安市| 新竹市| 永泰县| 张家界市| 无锡市| 叶城县| 保靖县| 延川县| 崇义县| 南投县| 潞城市| 肇州县| 来安县| 文登市| 曲麻莱县| 云南省| 桃源县| 穆棱市| 黎平县| 西吉县| 阿克陶县| 镇远县| 宝清县| 鸡泽县|