`
weiyinchao88
  • 浏览: 1180619 次
文章分类
社区版块
存档分类
最新评论

MySQL中文查询时的字符集匹配问题

 
阅读更多

写一个查询条件时的问题如下:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

如我想写一个字段中包含“李”字的所有记录

$str="李";

select*fromtablewherefieldlike'%$str%';

显示的记录中除了包含”李”字的记录,还有不包含“李”字的记录。为什么?

在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在MySQL的很多版本中都存在。如果这个问题不解决,那么MySQL将无法实际处理中文。

出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。

方法一:

是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"namechar(10)"改成"namechar(10)binary"。

方法二:

如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk参数,这样MySQL就会直接支持中文查找和排序了。

方法三:(此方法不能应用查询字段索引)

可以使用Mysql的locate函数来判断。以上述问题为例,使用方法为:

SELECT*FROMtableWHERElocate(查询字段名,'李')>0;

方法四:

把Select语句改成这样SELECT*FROMTABLEWHERE查询字段名LIKEBINARY'%要查找字符串%'即可

<!--EndFragment-->
分享到:
评论

相关推荐

    关于mysql查询字符集不匹配问题的解决方法

    主要给大家介绍了关于mysql查询字符集不匹配问题的解决方法,文中通过示例代码给大家介绍的非常详细,对同样遇到这个问题的朋友们具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

    mysql 字符集 乱码问题

    解决字符集通讯设置不匹配的方法: (修改默认的character_set_client,character_set_connection,character_set_result)

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    如果字段的值与指定的字符串相匹配,则满足查询条件,该纪录将被查询出来。如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:[ NOT ] LIKE '字符串' “NOT”可选参数,加上 NOT表示与指定的字符串不...

    MySQL中文参考手册.chm

    9.1.1 用于数据和排序的字符集 9.1.2 增加一个新的字符集 9.1.3 多字节字符支持 9.2 更新日志 9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的...

    MySQL 5.1参考手册中文版

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列...

    MySQL 5.1官方简体中文参考手册

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    mysql5.1中文手册

    MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集...

    MySQL 5.1参考手册 (中文版)

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    MySQL中文参考手册

    + 4.15.2 启动 MySQL 服务器的问题 + 4.15.3 自动启动和停止 MySQL + 4.15.4 选项文件 o 4.16 升级和降级(downgrading)时有什么特别要做的事情吗? + 4.16.1 从一个 3.22 版本升级到 3.23 + 4.16.2 从一个 ...

    MYSQL中文手册

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列...

    MYSQL

    9.1.1 用于数据和排序的字符集 9.1.2 增加一个新的字符集 9.1.3 多字节字符支持 9.2 更新日志 9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的性能 ...

    MySQL 5.1参考手册

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    mysql官方中文参考手册

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    mysql索引失效.docx MySQL索引失效是指在查询执行过程中,数据库无法有效地使用索引来提高查询性能

    多列索引的顺序问题:如果查询中的条件和多列索引的顺序不匹配,MySQL可能无法使用索引。多列索引按照定义的顺序进行匹配,如果查询不是按照相同的顺序来进进行查询,索引将无法有效使用。 查询范围过大:如果查询...

    MySQL5.1参考手册官方简体中文版

    10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 ...

    MySql5中文乱码的解决方法

    在使用MYSQL时,插入中文字符,经常会出现乱码,中文全被用?...在MYSQL中,如果使用缺省的字符集,在建库、建表时,默认使用的是latin1字符集,为ISO 8859-1西欧字符集。插入中文字符时,与之不匹配,就会出现乱码。

    MySql数据库表操作:创建表、删除表、查看表、修改、查询表(详细)、设置表的字符编码

    5.3 带like的通配符匹配查询 5.4 空值查询 5.5 带AND的多条件查询 5.6 带OR的多条件插查询 5.7 去重复查询 5.8 对结果排序 5.9 分组查询 5.10 union合并查询 5.11 LIMIT分页查询 5.12 内连接查询和外连接查询 6 设置...

Global site tag (gtag.js) - Google Analytics