我有以下查询:
SELECT `user_pwd` FROM (`td_user`) WHERE UPPER(user_name) = 'simmyp' AND `status` = 'A'
在db中,user_name存储为simmyp
。上述查询不应产生SIMMYP != simmyp
的任何结果,但会显示simmyp
的记录。为什么会这样?我正在使用utf8_general_ci
。
注意:我会在双方都使用upper
,但我想知道upper
在上述情况下如何运作。
答案 0 :(得分:2)
您正在使用utf8_general_ci - 您回答了自己的问题! “ci”代表Case Insensitive。
您可以做的是:
SELECT `user_pwd` FROM (`td_user`) WHERE BINARY UPPER(user_name) = 'simmyp**' AND `status` = 'A'
或将COLLATE utf8_bin
附加到您的查询中。
答案 1 :(得分:1)
使用COLLATE
运算符:)
SELECT `user_pwd` FROM (`td_user`)
WHERE `status` = 'A' AND UPPER(user_name) LIKE 'simmyp' COLLATE utf8_bin