`
liulanghan110
  • 浏览: 1076733 次
  • 性别: 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的SQL语句大小写不敏感问题解决方案

    同时,在查询字符串时,MySQL 是大小写不敏感的,这也会导致大小写问题的产生。 在实际应用中,这个问题可能会引起一些问题,例如在插入数据时可能会发生 Duplicate entry Error,或者在查询时返回的结果不正确。...

    PostgreSQL数据库对象名大小写敏感的解决方法

    然而,Mac OS X是一个特例,尽管基于Unix,但默认的文件系统HFS+对大小写不敏感。MySQL提供了一个系统变量`lower_case_table_names`,允许用户根据需求调整表名和数据库名的大小写敏感性。 综上所述,理解并适应...

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

    当你在进行SQL查询时发现字符串不区分大小写,可能是因为在创建表或数据库时,选择了不区分大小写的校对规则。 “_bin”结尾的校对规则,如“utf8mb4_bin”,意味着二进制区分大小写,它会严格地根据字节值来比较...

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

    MySQL查询时区分字符串中字母大小写的方法主要涉及字符集(character set)和校对规则(collation)。MySQL默认的行为是不区分字符串中的字母大小写,这可能会在某些场景下引起困扰,比如在需要严格区分大小写的...

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

    String.Replace()方法是最常用的字符串替换方法,但它不能忽略大小写。这意味着,如果我们要替换的字符串包含大小写不同的字符,这个方法将无法正确地实现替换。 2. System.Text.Regex(正则表达式) System.Text....

    MySql查询不区分大小写解决方案(两种)

    理解并掌握这些方法,可以帮助你在MySQL中根据需要实现大小写的敏感或不敏感查询。但需要注意,修改数据库结构或查询方式可能会影响到已有的应用逻辑,所以在实际操作时,应充分考虑可能的影响,并做好相应的测试。...

    数据库区分大小写的设置

    MySQL在处理字符串时,默认是区分大小写的。但在实际应用中,我们可以通过多种方式调整这一行为: 1. **创建表时指定大小写敏感性**: - 可以在创建表时为某个字段指定 `BINARY` 属性来使其区分大小写。 ```sql ...

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

    MySQL中的大小写敏感问题主要涉及数据存储和查询的特性,特别是在处理字符串时。在默认情况下,MySQL数据库在大多数情况下对字符串进行的是不区分大小写的比较,这可能导致在某些场景下,比如用户登录验证或者特定...

    Mysql大小写敏感的问题

    MySQL数据库在处理字符串时对大小写的敏感性是一个重要的特性,特别是在跨平台操作时。这个问题主要涉及到表名、列名以及查询条件中的字符串匹配。 一、MySQL的大小写敏感性: 1. **创建表时的大小写敏感性**: ...

    MySQL 字符类型大小写敏感

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

    解决mysql进行ip字符串比较问题

    在MySQL数据库中,进行IP字符串的比较可能会遇到一些特殊的挑战,因为IP地址通常以字符串形式存储,而字符串的比较规则可能并不符合我们预期的网络地址比较逻辑。本篇将深入探讨如何有效地解决这个问题,以及相关的...

    MySQL 基础 - 字符串函数.md

    这两种函数对于标准化文本数据非常有用,特别是当需要进行不区分大小写的比较时。 **语法结构**: ```sql UPPER(str) LOWER(str) ``` - `str`是要转换的字符串。 **示例代码**: ```sql SELECT UPPER('hello ...

    批量替换 MySQL 指定字段中的字符串

    但需要注意,`REPLACE()` 函数是区分大小写的,因此在处理大小写敏感的情况时要特别注意。 在实际应用中,批量替换可能涉及大量数据,因此在执行此类操作前,建议先备份数据,以防止意外的数据丢失。同时,可以先...

    PHP 笔记001 - 字符串、正则表达式

    - 字符串函数如`strtoupper`、`strtolower`、`ucfirst`、`ucwords`、`substr`和`strtr`用于字符串的大小写转换、截取和替换。 - `iconv`和`mb_convert_encoding`函数可以用于字符串的编码转换。 - 字符串查找函数...

    Mysql字符串处理函数详细介绍、总结

    9. LENGTH(str):计算字符串str的字符数,不区分大小写。 10. LTRIM(str):删除字符串str左侧的空格。 11. POSITION(substr, str):返回子串substr在字符串str中首次出现的位置,如果不存在,返回0。 12. QUOTE...

    解决MySQl查询不区分大小写的方法讲解

    在MySQL数据库中,查询操作默认情况下是不区分大小写的,这意味着如果你在查询时输入的字符串与数据库中的数据在大小写上不完全匹配,查询仍然可能返回结果。这在某些场景下可能会导致意料之外的问题,比如在用户...

Global site tag (gtag.js) - Google Analytics