社区
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个汉字,如果能,请问应该如何设计?
谢谢!
...全文
723
8
打赏
收藏
关于MySQL中char(4)汉字输入的问题
我在MySQL中设计了一个char(4)的字段,原本只想他能接受2个汉字的输入,却发现结果它能接受4个汉字的输入。 而以前在ms sql server中,char(4)只能输入2个汉字。 我的MySQL版本是5.1的,不知道可不可以让其char(4)的情况下只能输入2个汉字,如果能,请问应该如何设计? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的。
Mysql
中
文乱码
问题
完美解决方案
如果你用
MySql
也有
中
文乱码,你首先骂死它,之后用我的方法,可能解决
问题
了。不废话,你在你的
Mysql
黑框编辑器输入:
mysql
> show variables like "%
char
%";就发现你的字符集原来没有改完的。
MySQL
插入
中
文数据报错乱码,cmd命令行窗口
中
文显示乱码——
问题
解决
第一步: 通过CMD窗口连接数据库, show databases; use test(换成你的数据库名称); 第二步: 输入show variable like ‘%
char
%’; ,查看数据库默认字符编码。 可以看到除了第四个,其它都是utf8(如果你的不是这样也没关系,下面的步骤将会统一改成),如下图 第三步: 输入select * from t_items(注意换成你的表名); ,查看表单里的
中
文是否正常。如下图,出现
中
文乱码
问题
第四步: 更改数据库字符编码,输入一下命令: set
char
acter_set_client=gb2312; set
char
acter_set_co
MySQL
5.6/
MySQL
5.7/
MySQL
8各平台安装部署
课程包括以下内容:
MySQL
5.6版本在Windows系统
中
的安装。
MySQL
5.6版本在Linux系统
中
的安装。
MySQL
5.7版本在Windows系统
中
的安装。
MySQL
5.7版本在Linux系统
中
的安装。
MySQL
8.0版本在Windows系统
中
的安装。 ...
char
在
mysql
中
的意思_
mysql
中
char
表示什么意思
mysql
中
char
表示定长字符串类型,它的特点是:1、存储空间固定;2、长度不够时,内部存储使用空格填充;3、输入的字符长度超过指定长度后,
char
会截取超出的字符。
char
类型适用于存储很短的字符串。(推荐教程:
mysql
教程)
char
char
:定长字符串类型特点:存储空间固定。长度不够时内部存储使用空格填充。若字段本身末尾存在空格,检索出来自动截断末尾空格(因为分不清空格是字段含有的还是填...
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
56,679
社区成员
56,709
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章