社区
MySQL
帖子详情
关于MySQL中char(4)汉字输入的问题
cqnucsmoon
2009-02-26 06:16:26
我在MySQL中设计了一个char(4)的字段,原本只想他能接受2个汉字的输入,却发现结果它能接受4个汉字的输入。
而以前在ms sql server中,char(4)只能输入2个汉字。
我的MySQL版本是5.1的,不知道可不可以让其char(4)的情况下只能输入2个汉字,如果能,请问应该如何设计?
谢谢!
...全文
802
8
打赏
收藏
关于MySQL中char(4)汉字输入的问题
我在MySQL中设计了一个char(4)的字段,原本只想他能接受2个汉字的输入,却发现结果它能接受4个汉字的输入。 而以前在ms sql server中,char(4)只能输入2个汉字。 我的MySQL版本是5.1的,不知道可不可以让其char(4)的情况下只能输入2个汉字,如果能,请问应该如何设计? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cqnucsmoon
2009-03-02
打赏
举报
回复
是的,谢谢两位朋友的测试。
经我实验,在低版本4.0.27这个版本中,char(4)只能存入2个汉字。
不过,这个低版本却又不支持存储过程这个功能。
百年树人
2009-03-01
打赏
举报
回复
[Quote=引用楼主 cqnucsmoon 的帖子:]
我在MySQL中设计了一个char(4)的字段,原本只想他能接受2个汉字的输入,却发现结果它能接受4个汉字的输入。
而以前在ms sql server中,char(4)只能输入2个汉字。
我的MySQL版本是5.1的,不知道可不可以让其char(4)的情况下只能输入2个汉字,如果能,请问应该如何设计?
谢谢!
[/Quote]
经测试,在uft8的情况下也能存放4个中文。
建议楼主这种需求(char(4)的情况下只能输入2个汉字)通过程序来控制比较好。
iihero
2009-02-28
打赏
举报
回复
要想计算用于保存具体CHAR、VARCHAR或者TEXT列值的字节数,需要考虑该列使用的字符集。在具体情况中,当使用Unicode时,必须记住所有Unicode字符使用相同的字节数。
mysql> show variables like '%char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | d:\mysql-5.0.9-beta-win32\share\charsets/ |
+--------------------------+-------------------------------------------+
7 rows in set (0.00 sec)
mysql> create table t1(id char(4));
Query OK, 0 rows affected (0.13 sec)
mysql> insert into t1 values('中国');
Query OK, 1 row affected (0.05 sec)
mysql> select * from t1;
+------+
| id |
+------+
| 中国 |
+------+
1 row in set (0.00 sec)
mysql> insert into t1 values('中国强大');
Query OK, 1 row affected (0.06 sec)
mysql> select * from t1;
+----------+
| id |
+----------+
| 中国 |
| 中国强大 |
+----------+
2 rows in set (0.00 sec)
mysql> insert into t1 values('中国强大吗');
Query OK, 1 row affected, 1 warning (0.06 sec)
mysql> select * from t1;
+----------+
| id |
+----------+
| 中国 |
| 中国强大 |
| 中国强大 |
+----------+
3 rows in set (0.00 sec)
上边的实验也印证了char(4)在gbk字符集下最长可以存储4个汉字。
cqnucsmoon
2009-02-27
打赏
举报
回复
自己顶下吧。
cqnucsmoon
2009-02-27
打赏
举报
回复
我用的是UTF8这个字符集。
应该设置成什么字符集才正确呀?
我在网上看了下,好象mysql中char(4)指的是4个字符,而不是4个字节,不知道是不是这样的啊?!
fcoolx
2009-02-27
打赏
举报
回复
UTF8 中文占 3个字节
rucypli
2009-02-26
打赏
举报
回复
应该是出错提示啊 Data too long for column 'a' at row 1
ACMAIN_CHM
2009-02-26
打赏
举报
回复
char(4)
你用的字符集是什么?要知道如果是UTF8或者其它的一些,连 'A'也是占两个BYTE的。
char
在
mysql
中
的意思_
mysql
中
char
表示什么意思
mysql
中
char
表示定长字符串类型,它的特点是:1、存储空间固定;2、长度不够时,内部存储使用空格填充;3、输入的字符长度超过指定长度后,
char
会截取超出的字符。
char
类型适用于存储很短的字符串。(推荐教程:
mysql
教程)
char
char
:定长字符串类型特点:存储空间固定。长度不够时内部存储使用空格填充。若字段本身末尾存在空格,检索出来自动截断末尾空格(因为分不清空格是字段含有的还是填...
[转载]
MySQL
中
char
与 var
char
能存多少汉字
问题
_-Chaz-_新浪博客
原文地址:
MySQL
中
char
与var
char
能存多少汉字
问题
作者:下一步
char
是一种固定长度的类型,var
char
则是一种可变长度的类型。 其区别在于: ch
char
(M)类型的数据列里,每个值都占用M个字节,如果长度小于M,
MySQL
就会在它的右边用空格字符来填补空缺. 而vvar
char
(M)类型的数据列里,每个值只占用刚好够用的字节再加上1个或者...
mysql
中
char
存储
中
文_数据库
中
的字符类型存储字符和汉字的数量
sqlServer2012(936 简体
中
文GBK)为例:例如:var
char
(10),只能存储10个英文字符或数字,也只能存储5个汉字;
char
(10),只能存储10个英文字符或数字,也只能存储5个汉字;nvar
char
(10),即存储10个英文字符或数字,也能存储10个汉字;n
char
(10),即存储10个英文字符或数字,也能存储10个汉字;var
char
(max),大值数据类型最多可以存储...
mysql
char
存汉子_
char
如何存储汉字
浅谈SQL Server、
MySQL
中
char
,var
char
,n
char
,nvar
char
区别最近一次的面试
中
,被面试官问到var
char
和nvar
char
的区别,脑海里记得是定长和可变长度的区别,但却没能说出来。后来,在网上找了下网友总结的区别。在这里做个备忘录:一,SQL Server
中
char
,var
char
,n
char
,nvar
char
的区别(援引:https://www.cnb...文...
MySQL
中
char
()长度
问题
?以及var
char
()长度
问题
?
mysql
中
char
(M)
中
M的长度,指定字节?还是字符? 那var
char
(M)又是怎样的?
MySQL
56,912
社区成员
56,754
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章