为什么我的 Mysql 不支持中文查询?

原创 2004年06月22日 17:38:00

为什么我的 Mysql 不支持中文查询?


 

Q:

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

 

A:

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

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

方法一:

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

方法二:

  如果你使用源码编译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%'即可!

mysql中文进行全文索引支持问题

先来看看对一个字段做全文索引,作为一个数据库系统需要做哪些工作? 假设一个文章表里面包含几个字段:文章id、文章作者、文章标题、文章内容   比如,我们对文章内容这个字段artilce_cont...
  • dynaamo
  • dynaamo
  • 2015年09月07日 19:54
  • 2113

HUE beeswax中文显示问题的解决方案

HUE是Cloudera推出的Hadoop生态系统的Web访问接口,基于Python Django开发。 在使用过程中发现,如果提交的SQL语句中有中文的注释,提交之后,整个语句将会保存在后...
  • qiaochao911
  • qiaochao911
  • 2013年06月28日 17:17
  • 1491

mysql出现中文乱码或不能输入中文问题的Windows或Linux系统解决方法

相信MySQL新手在刚接触MySQL时总会遇到中文乱码的问题,如ERROR 1366 (HY000): Incorrect string value。作为新手,我也遇到过。不过以前没系统地找过解决方法...
  • fengxiaoxiao_1
  • fengxiaoxiao_1
  • 2016年08月27日 21:07
  • 1738

在windows的cmd中向MySQL查询与输入中文

最近在学习MySQL时遇到了无法在cmd显示中文和通过cmd向Mysql插入中文的问题, 下面就简单说下我是怎么解决的。 在往下进行之前,先介绍一个Mysql命令: mysql> sho...
  • u011434036
  • u011434036
  • 2017年03月20日 15:42
  • 529

MySQL客户端查询中文显示为问号(linux)

问题可能出在3个方面 1. 终端
  • emy_zj
  • emy_zj
  • 2014年10月03日 21:17
  • 1506

navicat for mysql中不能显示中文的解决

右键计算机->管理->服务   关闭MySQL服务,在mysql安装目录下,my.ini文件进行如下修改,没有则直接进行添加: [client] #修改客户端默认字符编码格式为utf8 de...
  • MECHASE
  • MECHASE
  • 2017年03月30日 00:40
  • 1449

linux下让mysql数据库支持中文

因为要跟同学做一个普通的项目,而本人平时要用linux 所以就装了个mysql .最近刚开始学mysql 的使用方法。   今天在mysql 创建表之后,想说插入数据先是发现插入进去的中文显示不了,所...
  • hengrjgc
  • hengrjgc
  • 2014年02月15日 20:11
  • 1161

mac下解决mysql不兼容中文问题

一般来说,在mac下安装好mysql以后都是不支持中文的,取存中文都会报错,那是因为相关的编码没有设置好, 用命令 mysql -uroot -p 回车输入密码  启动mysql之后,输入 sta...
  • oXiaoChong12345
  • oXiaoChong12345
  • 2015年11月26日 15:47
  • 370

JDBC查询条件中包含中文,无查询结果(编码问题)

JDBC查询条件中包含中文,无查询结果,编码问题
  • catharine12
  • catharine12
  • 2015年10月09日 00:12
  • 1337

Mybatis使用MySQL进行模糊查询时输入中文检索不到结果

项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空。...
  • DeveloperFanyl
  • DeveloperFanyl
  • 2015年09月16日 18:11
  • 6005
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为什么我的 Mysql 不支持中文查询?
举报原因:
原因补充:

(最多只允许输入30个字)