谈关于mysql中文模糊查找问题
2009-12-03 10:37
411 查看
许多朋友在使用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系统也会认为两者区配!
我的mysql-4.0.12没有解决上述问题。不过我采用一个较笨的办法解决了!
针对以上问题,各位高手有何解决办法!!!一起来说一说!
(提出办法者可得100分)
---------------------------------------------------------------
1: my.ini 文件中加入 default-character-set =gb2312
2: 字段不要加 Binary 属性
3: 执行 select * from mytable where mysqlname like "%不%"
---------------------------------------------------------------
需要说明的是
1:
2:
是最重要的,
如果是查询汉字,
select * from mytable where mysqlname like "%不%"
如果是大小字区分查询英文字符,
select * from mytable where mysqlname like Binary("%A%")
如果上述条件均要
select * from mytable where mysqlname like "%不%" AND mysqlname like Binary("%A%")
不过像这类情况,
已不再建议使用 LIKE '%a%' 形式了
建议使用 全文索引 与 正则表达式 来匹配字串
有一些朋友提出了解决办法,大致有两种:
其一,加字段属性binary(),
其二,改my.cfg启动参数为default-character-set =gbk(或gb2312).
我从问题的根本原因分析,
其一,字母大小不区分问题(通过方法一可以解决)
其二,这是大多数人没有想到的,我以前也没有想到,
例:
汉字“不”的第1、2字节ascii值分别为:178与187
汉字“安”的第1、2字节ascii值分别为:176与178
汉字“花”的第1、2字节ascii值分别为:187与168
聪明的人已经看出来了:在字符串“安花”中模糊查找字符“不”字时,mysql系统也会认为两者区配!
我的mysql-4.0.12没有解决上述问题。不过我采用一个较笨的办法解决了!
针对以上问题,各位高手有何解决办法!!!一起来说一说!
(提出办法者可得100分)
---------------------------------------------------------------
1: my.ini 文件中加入 default-character-set =gb2312
2: 字段不要加 Binary 属性
3: 执行 select * from mytable where mysqlname like "%不%"
---------------------------------------------------------------
需要说明的是
1:
2:
是最重要的,
如果是查询汉字,
select * from mytable where mysqlname like "%不%"
如果是大小字区分查询英文字符,
select * from mytable where mysqlname like Binary("%A%")
如果上述条件均要
select * from mytable where mysqlname like "%不%" AND mysqlname like Binary("%A%")
不过像这类情况,
已不再建议使用 LIKE '%a%' 形式了
建议使用 全文索引 与 正则表达式 来匹配字串
相关文章推荐
- 关于mysql中文插入 问号??问题的解决方法!
- MYSQL 关于中文的问题
- 关于servlet向mysql添加数据时中文乱码问题的解决
- Oracle、Mysql、MS sql中关于模糊查询问题
- php.ini中文注释版 ---关于路径查找那部分很好,解决问题了。还可以看phpinfo() 信息
- 关于Java调用批处理命令向mysql导入数据的中文乱码有关问题
- 关于mysql中文乱码问题的解决
- MySQL中文模糊检索问题的解决方法
- 关于Mybatis 中模糊查询查找不到Mysql数据库的内容的问题
- 关于MySQL存储过程中中文乱码的问题
- MySQL中文模糊检索问题的解决方法
- mysql语句从中间查找、解决重复插入和更新、模糊查找、找最小值等问题
- Mysql中文模糊查询问题
- 关于mysql导入数据中文乱码问题解析
- 关于 Hibernate 存储数据到 MySQL 中文乱码的问题
- 关于使用Mysql(SqlYog)中文乱码的问题
- 关于python连接mysql中文乱码问题
- mysql的模糊查找是否走索引问题
- 关于Rails+MySQL的中文问题
- 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)