我有以下疑问:

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/

10-11 03:38