1

次のクエリがあります。

SELECT `user_pwd` FROM (`td_user`) WHERE UPPER(user_name) = 'simmyp' AND  `status` = 'A'

データベースでは、user_name は として保存されsimmypます。上記のクエリでは、 のような結果は得られませんSIMMYP != simmypが、 のレコードが表示されますsimmyp。なぜそうなのですか?を使用してutf8_general_ciいます。

注:upper両側で使用しupperますが、上記の場合にどのように機能するかを知りたいです。

4

2 に答える 2

2

あなたは utf8_general_ci を使用しています - あなたは自分の質問に答えました! 「ci」は大文字と小文字を区別しないことを表します。

次にできることは次のとおりです。

SELECT `user_pwd` FROM (`td_user`) WHERE BINARY UPPER(user_name) = 'simmyp**' AND `status` = 'A'

またはクエリに追加COLLATE utf8_binします。

于 2013-06-04T21:01:06.137 に答える
1

COLLATE演算子を使用してください:)

SELECT `user_pwd` FROM (`td_user`)
WHERE `status` = 'A' AND UPPER(user_name) LIKE 'simmyp' COLLATE utf8_bin
于 2013-06-04T21:00:55.623 に答える