【问题标题】:MYSQL making query case insensitiveMYSQL 使查询不区分大小写
【发布时间】:2018-05-13 13:32:31
【问题描述】:

我知道 mysql 查询区分大小写。但在我的一个数据库中,它不区分大小写。以下两个查询都给出相同的结果

Select username from auth_user where username='shivam'

Select username from auth_user where username='ShivaM'

我在我的 django 项目中使用了这个数据库,我通常使用 icontains 和 iexact 查找不区分大小写的查询,但我无法找出上述行为的原因。

【问题讨论】:

  • 你需要用SHOW CREATE TABLE auth_user检查数据库字符集排序或colomn字符集排序

标签: mysql django


【解决方案1】:

默认字符集和排序规则是 latin1 和 latin1_swedish_ci,因此默认情况下非二进制字符串比较不区分大小写。这意味着如果您使用 col_name LIKE 'a%' 进行搜索,您将获得所有以 A 或 a 开头的列值。

// this returns true
select 'A' like 'a'

// this returns false
select 'A' like binary 'a'


select * from user where email like binary 'a'

也许这个链接对你有用

https://dev.mysql.com/doc/refman/8.0/en/case-sensitivity.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 2011-11-29
    • 2018-10-17
    • 2016-11-04
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多