这样就能找出含有中文的记录了;如果查找全英文的记录,长度是相等的,把“<>”换成“=”就可以了,即
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值分别为:176与178
汉字“花”的第1、2字节ascii值分别为:187与168
聪明的人已经看出来了:在字符串“安花”中模糊查找字符“不”字时,mysql系统也会认为两者区配!
另外:
my.ini 文件中加入 default-character-set =gb2312 ,字段不要加 Binary 属性 ,执行 select * from mytable where mysqlname like "%不%"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)