MYSQL上层功能

时间:2013-06-04 20:57:09

标签: mysql

我有以下查询:

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在上述情况下如何运作。

2 个答案:

答案 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