【问题标题】:MySQL select by difference between lowercase and uppercase characters [duplicate]MySQL通过小写和大写字符之间的差异进行选择[重复]
【发布时间】:2017-03-04 03:46:42
【问题描述】:

我有这样的表:

Table name: hash_table
----------------
 id        hash
----------------
 1         abc
 2         aBc
 3         abC
 4         AbC
 5         ABc
----------------

小写字母和大写字母是有区别的。例如abc 不等于aBc

在此查询中,返回所有行:

SELECT * FROM `hash_table` WHERE `hash` = "abc"

通过在 stackoverflow 中搜索,一些答案谈到 UPPERLOWERUCASE 在选择查询中使用,但它们返回所有行。

有没有办法只返回正确的行?

【问题讨论】:

    标签: mysql uppercase lowercase


    【解决方案1】:

    可以在 sql 中以两种不同的方式执行字符串比较 ..binary 和 not binary .. 如果你不投二进制..比较是不区分大小写的..如果你使用二进制比较是按字节完成的,也是区分大小写的..

    尝试使用

    SELECT * FROM `hash_table` WHERE BINARY `hash` = BINARY "abc"
    

    【讨论】:

    • 谢谢❤️我对此进行了测试并且是正确的。但是hash列是varcharutf8_general_ci,这段代码没有问题吗?
    • 请记住,如果需要,您可以即时转换字符集和集合..但在选择中,rdbms 应假定表的相同字符集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2012-10-09
    • 2019-04-03
    • 2021-10-07
    • 1970-01-01
    • 2017-09-28
    相关资源
    最近更新 更多