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

2016-02-19 14:06 12 1 收藏

下面是个超简单的mysql中文查询时的字符集匹配问题教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

  我在写一个查询条件时的问题如下:
如我想写一个字段中包含“李”字的所有记录
?$str="李";
select * from table where field like ''%?$str%'' ;
显示的记录中除了包含”李”字的记录,还有不包含“李”字的记录。为什么?

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

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

方法一:

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

方法二:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

方法三:

  可以使用 Mysql 的 locate 函数来判断。以上述问题为例,使用方法为:
SELECT * FROM table WHERE locate(field,''李'') 0;
本站使用的就是这种方法,感觉还不错。:P

方法四:

把您的Select语句改成这样,SELECT * FROM TABLE WHERE FIELDS LIKE BINARY ''%FIND%''即可!

来源:http://www.tulaoshi.com/n/20160219/1606169.html

延伸阅读
标签: Java JAVA基础
关于JAVA学习者们,或多或少都会遇到这样的问题:编码基本知识,java,系统软件,url,工具软件等。 下面本文将针对以上几点问题进行描述讨论,我们就以“中文”两个字为例来说明,查找相关资料可知“中文”的GB2312编码是“d6d0 cec4”,为Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。(注意,“中文”这两个字没有iso8859-1编码...
数据库中关于字符集的种类有很多,对编程有影响的主要是客户端字符集和数据库字符集(还有一个服务器字符集,不知道干什么用的)。 数据库中常用的操作就是保存数据和读取数据,在这过程中,乱不乱码和数据库字符集貌似没有什么关系。我们只要保证写入时选择的字符集和读取时选择的字符集一致,即只需保证两次操作的客户端字符集一致即...
标签: 电脑入门
学好Linux系统中字符集的知识,能够解决很多系统问题,下面图老师小编给大家介绍下Linux系统中字符集的实例,通过实例来更深入的了解Linux字符集的修改。 问题: 当在项目中用到服务器端导出并且查询条件中包含汉字时,总是导出失败,Excel中出现null字样,如何解决方法呢? 解决方法: 把linux的字符集改变一下。 路径:etc/sysco...
1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串...
改变redhat的系统语言/字符集 改变redhat的系统语言/字符集修改 /etc/sysconfig/i18n 文件,如 LANG="en_US",xwindow会显示英文界面, LANG="zh_CN.GB18030",xwindow会显示中文界面。 还有一种方法 cp /etc/sysconfig/i18n $HOME/.i18n 修改 $HOME/.i18n 文件,如 LANG="en_US",xwindow会显示英文界面, LANG...

经验教程

106

收藏

43
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部