有人能告诉我,如果MySQL SELECT查询是大小写敏感或大小写不敏感默认?如果不是,我要发送什么查询,这样我就可以做一些事情:
SELECT * FROM `table` WHERE `Value` = "iaresavage"
实际上,价值的真正价值是IAreSavage。
有人能告诉我,如果MySQL SELECT查询是大小写敏感或大小写不敏感默认?如果不是,我要发送什么查询,这样我就可以做一些事情:
SELECT * FROM `table` WHERE `Value` = "iaresavage"
实际上,价值的真正价值是IAreSavage。
当前回答
您可以小写的值和传递的参数:
SELECT * FROM `table` WHERE LOWER(`Value`) = LOWER("IAreSavage")
另一种(更好的)方法是使用文档中提到的COLLATE操作符
其他回答
SQL Select不区分大小写。
这个链接可以告诉你如何区分大小写:http://web.archive.org/web/20080811231016/http://sqlserver2000.databases.aspfaq.com:80/how-can-i-make-my-sql-queries-case-sensitive.html
WHERE短语中的字符串比较不区分大小写。你可以试着比较使用
WHERE `colname` = 'keyword'
or
WHERE `colname` = 'KeyWord'
你会得到同样的结果。这是MySQL的默认行为。
如果你想让比较区分大小写,你可以添加COLLATE,就像这样:
WHERE `colname` COLLATE latin1_general_cs = 'KeyWord'
SQL会给出不同的结果: WHERE colname COLLATE latin1_general_cs = '关键字'
Latin1_general_cs是大多数数据库中常见或默认的排序规则。
Marc B的回答基本正确。
如果您使用的是非二进制字符串(CHAR, VARCHAR, TEXT),根据默认排序规则,比较是不区分大小写的。
如果您正在使用二进制字符串(binary, VARBINARY, BLOB),比较是区分大小写的,因此您需要使用LOWER,如其他答案中所述。
如果不使用默认排序规则,而使用非二进制字符串,则大小写敏感性由所选的排序规则决定。
来源:https://dev.mysql.com/doc/refman/8.0/en/case-sensitivity.html。仔细地阅读。还有一些人误解了这一点,认为比较必须区分大小写或不敏感。事实并非如此。
您选择的排序规则集是否区分大小写。
试一试:
order by lower(column_name) asc;