web-dev-qa-db-ja.com

MySQLの大文字と小文字を区別するクエリ

これは以前このサイトで尋ねられましたが、十分な答えが見つかりませんでした。次のようなクエリを実行している場合:

Select Seller from Table where Location = 'San Jose'

「san jose」などではなく、場所が「San Jose」のセラーのみを返すようにするにはどうすればよいですか?

167
Michael Liao

MySQLクエリはデフォルトで大文字と小文字を区別しません。以下は、「値」を探している単純なクエリです。ただし、「VALUE」、「値」、「VaLuE」などを返します…

SELECT * FROM `table` WHERE `column` = 'value'

良いニュースは、大文字と小文字を区別するクエリを作成する必要がある場合、バイトごとの比較を強制する BINARY 演算子を使用すると非常に簡単です:

SELECT * FROM `table` WHERE BINARY `column` = 'value'
405
James mason

ジェームズの優れた答えを改善するには:

代わりに、定数の前にBINARYを置く方が良いです:

SELECT * FROM `table` WHERE `column` = BINARY 'value'

BINARYcolumnの前に置くと、その列でインデックスが使用できなくなります。

75
Shenxian

リストされた答えは正しいですが、大文字と小文字を区別する文字列を列に保持する場合は、 ドキュメント を読み、それに応じてテーブル定義を変更することをお勧めします。

私の場合、これは私の列を次のように定義することになりました:

`tag` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''

私の意見では、これはクエリの調整よりも優先されます。

22
Thomas Clowes