今天没什么事,玩点儿基础的东西
来试试char字符串数据类型的参数设置
首先看文档说明:
说,M这个变量是字节数,那我们就来试试到底是字节还是字符
创建表:
CREATE TABLE `test` (
`name` char(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
name字段数据类型为char(2)
按照文档说明来看,也就是只能存储2个字节的字符串
接下来分别用汉字,数字,字母,特殊符号进行测试
mysql> insert into test(name) value('现从人');
1406 - Data too long for column 'name' at row 1
汉字:现从人,插入报错,说太长了
mysql> insert into test(name) value('154');
1406 - Data too long for column 'name' at row 1
数字:154,插入报错,说太长了
mysql> insert into test(name) value('asd');
1406 - Data too long for column 'name' at row 1
字母:asd,插入报错,说太长了
mysql> insert into test(name) value('*&^');
1406 - Data too long for column 'name' at row 1
特殊符号:插入报错,说太长了
上面四种类型都试过了,我都用的3个字符
下面用两个字符试一下
mysql> insert into test(name) value('现从');
Query OK, 1 row affected
成功了!
问题来了:一个中文汉字在当前的表里不是3个字节吗?两个汉字就是6个字节,那char(2)定长2个字节,怎么插入成功了呢?
(utf8编码一个汉字是3个字节,gbk是2个字节)
我也不知道这是为什么,很多在开发中都是很模糊的在使用,关于文档写的是字节数,不知道大家有什么看法,实测是字符数啊!
欢迎阅读作者个人博客网站:http://www.ytshoping.com
版权声明:本文为qq_36431166原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。