我有以下疑问:
SELECT `user_pwd` FROM (`td_user`) WHERE UPPER(user_name) = 'simmyp' AND `status` = 'A'
在数据库中,用户名存储为
simmyp
。上面的查询不应该产生任何结果SIMMYP != simmyp
,但它会显示simmyp
的记录。为什么会这样?我正在使用utf8_general_ci
。注意:我会在两边使用
upper
,但我想知道upper
在上述情况下是如何工作的。 最佳答案
您正在使用utf8_general_ci-您回答了自己的问题!”ci“代表不区分大小写。
那么,你可以做的是:
SELECT `user_pwd` FROM (`td_user`) WHERE BINARY UPPER(user_name) = 'simmyp**' AND `status` = 'A'
或者将
COLLATE utf8_bin
附加到查询中。关于mysql - MYSQL上层功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16927337/