`
elprup
  • 浏览: 116487 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • php
阅读更多
2007年08月02日20:49:21  评论(1条) 字体:[大 中 小]
相关热点: 匹配 查询 中文 MySQL 包含 记录 这种
我在写一个查询条件时的问题如下:
如我想写一个字段中包含“李”字的所有记录
?$str="李";
select * from table where field like '%?$str%' ;
显示的记录中除了包含”李”字的记录,还有不包含“李”字的记录。为什么?

在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%'即可!

本篇文章来源于 站长中国 转载请以链接形式注明出处 网址:http://www.zzchn.com/edu/20070802/24936.shtml


ps:有时候直接在查询前加一句$db->query("set names gb2312");也可以
分享到:
评论

相关推荐

    设置mysql字符集

    ### MySQL字符集的基本概念 字符集(Character Set)定义了数据在存储和处理时所采用的编码标准,而校对集(Collation)则规定了字符集下的排序规则和比较方式。在MySQL中,主要涉及以下几个关键变量: - `...

    mysql 字符集 乱码问题

    ### MySQL字符集与乱码问题解析 在MySQL数据库管理中,字符集的配置与使用是十分重要的环节之一,尤其在处理多语言环境的数据时更是如此。如果字符集配置不当,很容易导致数据插入、查询过程中出现乱码问题。本文将...

    精通MySQL字符集与校对集

    ### 精通MySQL字符集与校对集 在MySQL中,正确地管理和配置字符集与校对集对于确保数据的正确性和一致性至关重要。字符集主要用于定义如何存储和表示文本数据,而校对集则定义了如何比较这些文本数据。本篇文章将...

    mysql字符集设置

    以下将详细讲解MySQL字符集的概念、设置方法以及在实际应用中可能出现的问题和解决方案。 1. **字符集概念**: - **字符集(Character Set)**:是一系列字符的集合,例如ASCII、GBK、UTF-8等,定义了字符的编码...

    Mysql字符集设置原理及常见问题解决

    MySQL字符集设置原理及其常见问题解决是数据库管理中不可或缺的一部分,尤其对于处理多语言或特殊字符的数据时,正确的字符集配置至关重要。字符集定义了数据库、表和字段能存储的字符范围,它决定了数据的编码和...

    设定mysql字符集解决终端乱码

    通过合理设置 MySQL 的字符集,可以有效避免因字符集不匹配导致的乱码问题。具体而言,需要注意客户端和服务端之间的字符集设置、创建表时的字符集选择以及数据插入和查询时的字符集处理等几个方面。希望本文能帮助...

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

    MySQL查询字符集不匹配问题通常出现在数据库、数据表或字段的字符集与应用程序(如网页)使用的字符集不一致时,导致数据无法正确存储或检索,尤其是涉及非ASCII字符(如中文)时。本篇文章将深入探讨这个问题,并...

    让我胃疼的MySQL字符集问题

    MySQL字符集问题一直以来都是数据库管理中的一个痛点,尤其是在处理多语言数据或者进行数据迁移时,不恰当的字符集设置可能导致乱码、无法存储特殊字符甚至数据丢失。这篇文档将深入探讨MySQL字符集的工作原理,常见...

    mysql数据库互相转换及同步工具-MySQL_MySQL字符集互转

    2. **MySQL字符集转换**:在MySQL中,可以使用ALTER TABLE语句来更改表的字符集,或者在创建数据库、表或列时指定字符集。对于整个数据库的转换,需要备份现有数据,然后重建数据库并导入数据。过程中要特别注意数据...

    mysql字符集1

    MySQL字符集是数据库管理系统中处理文本数据的关键组件,它决定了数据如何被编码、存储和检索。MySQL 5.6.21版本支持多种字符集,这些字符集可以通过查询`information_schema`库中的`character_sets`表来查看。`...

    字符集相关学习探讨(字符集相关定义以及MySQL中字符集分析)

    合理设置这些变量可以避免因字符集不匹配导致的数据乱码等问题。例如,确保`character_set_client`、`character_set_connection`和`character_set_results`之间的一致性是非常重要的,这样可以确保从客户端输入到...

    MYSQL中文显示乱码问题

    6. **数据导入导出**:在导入或导出数据时,要确保文件编码与数据库的字符集匹配,如果不匹配,可以使用工具如`iconv`进行转换。 7. **查看并调整系统级字符集**:检查系统环境变量,如`LC_ALL`或`LANG`,确保它们...

    MySQL客户端选项中的字符集配置.pdf

    #### 一、MySQL字符集与校对序概述 在MySQL中,字符集和校对序是非常重要的概念。字符集(character set)定义了一组字符及其对应的二进制编码方式,而校对序(collation)则是用来定义字符比较规则的一组规则。...

    mysql汉字乱码问题

    10. **数据库迁移**:在数据库迁移或升级过程中,也要注意字符集的兼容性和转换,避免因字符集不匹配引发乱码问题。 总之,解决MySQL中的汉字乱码问题需要从多个层面进行检查和调整,确保字符集在整个数据处理链路...

    MySql表字符集问题[参考].pdf

    MySQL中的字符集问题是一个常见的数据库管理挑战,尤其是在处理多语言数据或者进行跨系统数据迁移时。在本案例中,问题的核心在于两个表之间的字段字符集不兼容,导致了"非法的混合排序规则"(Illegal mix of ...

    MySQL字符集[参考].pdf

    处理中文乱码问题通常涉及到确保客户端、服务器以及数据存储之间的字符集匹配。例如,如果服务器和客户端均设置为`GB2312`,则中文字符能正确传输。若要支持多国语言,推荐使用`UTF8`,因为它包含更广泛的字符集。 ...

    mysql odbc字符集设置(中文显示乱码)

    1. **MySQL服务器端的字符集设置**:默认情况下,MySQL服务器可能设置为不同的字符集(如latin1),而这种字符集不支持中文。 2. **客户端的字符集设置**:客户端(如Delphi应用程序)可能也设置了特定的字符集,...

    解决连接mysql中文显示乱码

    解决MySQL连接时中文显示乱码的问题,关键在于确保数据库、连接参数以及应用程序内部各环节的字符集设置保持一致,并采用适合中文字符的编码方式,如UTF-8。通过上述步骤,可以有效避免中文乱码现象,保证数据的正确...

    Mysql运行SQL语句中文乱码问题的解决方法

    当MySQL处理中文字符时,如果当前使用的字符集与数据的实际字符集不一致,就会出现乱码。 #### 二、检查系统及数据库的字符集设置 首先需要确认服务器和数据库的字符集设置是否正确。可以通过以下SQL命令来查看: ...

Global site tag (gtag.js) - Google Analytics