MySQL根据小写和大写字符之间的差异进行选择

MySQL根据小写和大写字符之间的差异进行选择,mysql,uppercase,lowercase,Mysql,Uppercase,Lowercase,我有这样的桌子: Table name: hash_table ---------------- id hash ---------------- 1 abc 2 aBc 3 abC 4 AbC 5 ABc ---------------- 小写和大写字符之间存在差异。例如abc不等abc 在此查询中,返回所有行: SELECT * FROM `hash_table` WHERE `has

我有这样的桌子:

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中进行搜索,一些答案讨论了选择查询中使用的
UPPER
LOWER
UCASE
,但它们返回所有行


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

字符串比较可以在sql中以两种不同的方式执行:二进制和非二进制。。 如果您不强制转换二进制。。这一比较不分大小写。。如果使用二进制,则比较是按字节进行的,并且也区分大小写

试用

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

字符串比较可以在sql中以两种不同的方式执行:二进制和非二进制。。 如果您不强制转换二进制。。这一比较不分大小写。。如果使用二进制,则比较是按字节进行的,并且也区分大小写

试用

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

非常感谢。❤️ 我对此进行了测试,结果是正确的。但是
hash
列是
varchar
utf8\u general\u ci
,这段代码没有问题吗?您可以看一看,记住,如果需要,您可以动态转换字符集和集合..但是在一个select中,rdbms应该假定表中的字符集相同。谢谢❤️ 我对此进行了测试,结果是正确的。但是
hash
列是
varchar
utf8\u general\u ci
,这段代码没有问题吗?您可以看一看并记住,如果需要,您可以动态转换字符集和集合。但是在一个select中,rdbms应该假定表的字符集相同。