关于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个汉字,如果能,请问应该如何设计?
谢谢!
...全文
723 8 打赏 收藏 转发到动态 举报
写回复
用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的。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧