MySQL数据库中查找中文字符

MySQL数据库中查找中文字符,第1张

SELECT * FROM `tableA` WHERE LENGTH(`row_name`)<>CHARACTER_LENGTH(`row_name`)

这样就能找出含有中文的记录了;如果查找全英文的记录,长度是相等的,把“<>”换成“=”就可以了,即

SELECT * FROM `tableA` WHERE LENGTH(`row_name`)=CHARACTER_LENGTH(`row_name`)

直接用中文名称即可查询。

可按如下方法做测试:

1、创建表插入数据:

create table test

(序号 int,

名称 varchar(10))

insert into test values (1,'张三')

insert into test values (2,'李四')

2、执行查询:

select * from test where 序号=1

结果显示:

也就是说中文字段名在查询中可以直接引用。

在使用mysql进行中文模糊查找时需要注意一些方面:

(如select * from mytable where mysqlname like "%中文%"),就象我现在一样,找到不应找到的行!

有一些朋友提出了解决办法,大致有两种:

其一,加字段属性binary(),

其二,改my.cfg启动参数为default-character-set =gbk(或gb2312).

我从问题的根本原因分析,

其一,字母大小不区分问题(通过方法一可以解决)

其二,这是大多数人没有想到的,我以前也没有想到,

例:

汉字“不”的第1、2字节ascii值分别为:178与187

汉字“安”的第1、2字节ascii值分别为:176与178

汉字“花”的第1、2字节ascii值分别为:187与168

聪明的人已经看出来了:在字符串“安花”中模糊查找字符“不”字时,mysql系统也会认为两者区配!

另外:

my.ini 文件中加入 default-character-set =gb2312 ,字段不要加 Binary 属性 ,执行 select * from mytable where mysqlname like "%不%"


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8693171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存