`
liulanghan110
  • 浏览: 1063983 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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;

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

方法五:
如果你在Windows下使用已经编译好的MySQL,可以修改My.ini中的字符集选项。
default-character-set = gb2312

在默认情况下,mysql搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE 'a%'进行搜索,你将获得以A或a开始的所有列。

如果打算使搜索区分大小写,请确保操作数之一具有区分大小写的或二进制校对。例如,如果你正在比较均适用latin1字符集的列和字符串,可使用COLLATE操作符,使1个操作数具有latin1_general_cs或latin1_bin校对特性。例如:

col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin

如果希望总是以区分大小写的方式处理列,可使用区分大小写的或二进制校对声明它。建表时候使用BINARY标示。
CREATE TABLE T(
    A VARCHAR(10) BINARY
);

分享到:
评论

相关推荐

    mysql 查询时没有对字符串区分大小写处理方法

    mysql 查询时没有对字符串区分大小写的原因主要在于创建表时没有指定其校对规则,或者校对规则设置成了不区分大小写。 区分大小写的设置通常是: utf8****_bin ,以 “_bin” 结尾的表示区分大小写,它表示的是:...

    详解MySQL查询时区分字符串中字母大小写的方法

    MySQL默认是不区分大小写的,这个涉及到collate字符集与校验规则方面的知识,下面会讲到,这里我们就来详解MySQL查询时区分字符串中字母大小写的方法.

    MySQL 字符类型大小写敏感

    mysql字符类型默认是不区分大小写的,即select * from t where name=’AAA’与=’aaa’没区别,以下是测试的例子 (root@localhost)[hello]> create table test1(id int, name varchar(10)); (root@localhost)[hello...

    高效的忽略大小写的字符串替换(Replace)函数[定义].pdf

    高效的忽略大小写的字符串替换(Replace)函数[定义].pdf

    MYSQL的binary解决mysql数据大小写敏感问题的方法

    BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写

    MySQL常用字符串函数

    MySQL常用字符串函数 先看下数据库表 lengtt(str) length:获取参数值的字节个数(注意不是字符个数) SELECT LENGTH('haosy') 结果是5 ...upper(str)、lower(str) 转换大小写 upper:变大写 SELECT UPPER('h

    db_text_search:ActiveRecord之上的统一接口,用于不区分大小写的字符串和前缀查询,以及在SQLite,MySQL和PostgreSQL上的全文本搜索

    不区分大小写的字符串设置查询,前缀查询和不区分大小写的索引创建。 基本的全文搜索,用于搜索术语列表,并创建FTS索引。 安装 将此行添加到您的应用程序的Gemfile中: gem 'db_text_search' , '~> 0.3.2' 用法 ...

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

    如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:[ NOT ] LIKE '字符串' “NOT”可选参数,加上 NOT表示与指定的字符串不匹配时满足条件;“字符串”表示指定用来匹配的字符串,该字符串必须加单引号...

    mysql like查询字符串示例语句

    在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。 SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了...

    sql 判断字符串中是否包含数字和字母的方法

    判断是否含有字母 select PATINDEX('%[A-Za-z]%', ... 您可能感兴趣的文章:MS SQL 实现验证字符串是否包含有大小写字母的功能详解MySQL查询时区分字符串中字母大小写的方法SqlServer 获取字符串中小写字母的sql语句

    MySql 5.1 参考手册.chm

    9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符...

    MYSQL v4.1中文参考手册(CHM)

    6.1.3 名字的大小写敏感性 6.1.4 用户变量 6.1.5 系统变量 6.1.6 注释句法 6.1.7 MySQL 对保留字挑剔吗? 6.2 列类型 6.2.1 数字类型 6.2.2 Date 和 Time 类型 6.2.2.1 Y2K 问题和日期类型 6.2....

    MySQL prepare语句的SQL语法

    MySQL prepare语法: PREPARE statement_name FROM preparable_SQL_statement; /*定义*/ EXECUTE statement_name ...语句名称对大小写不敏感。preparable_stmt可以是一个文字字符串,也可以是一个包含了语句文本的

    MYSQL

    7.1.5.1 名字的大小写敏感性 7.2 用户变量 7.3 列类型 7.3.1 列类型的存储要求 7.3.5 数字类型 7.3.6 日期和时间类型 7.3.6.1 问题和日期类型 7.3.6.2 DATETIME,DATE和TIMESTAMP...

    MySQL 5.1参考手册

    9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对

    MySQL 5.1中文手冊

    9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符...

    mysql常用函数实例总结【聚集函数、字符串、数值、时间日期处理等】

    本文实例讲述了mysql常用函数。分享给大家供大家参考,具体如下: 本文内容: mysql函数的介绍 聚集函数 avg count max ... 字母大小写转换函数:大写:upper(x),ucase(x);小写lower(x),lcase(x)

Global site tag (gtag.js) - Google Analytics