2011-10-22 32 views
143

これまでこのサイトで質問されていましたが、十分な回答が見つかりませんでした。私のようなクエリをやっている場合:MySQLの大文字と小文字を区別するクエリ

Select Seller from Table where Location = 'San Jose' 

私はそれが「サンノゼ」または何か他のではなく、場所「サンノゼ」でのみ販売を返すことができますどのように?

+1

[公式](http://dev.mysql.com/doc/refman/5.0/en/charset-collat​​e.html) –

+3

の可能な重複を使用します。[MySQLでSQLの大文字と小文字を区別するにはどうしたらよいですか?] (http://stackoverflow.com/questions/5629111/how-can-i-make-sql-case-sensitive-string-comparison-on-mysql) – ks1322

+1

トップの答えはより簡単ですので、COLLATE、imoよりも優れています。 –

答えて

375

MySQLクエリは、デフォルトでは大文字と小文字が区別されません。以下は 'value'を探している簡単なクエリです。しかし、良いニュースは、あなたは、大文字と小文字を区別したクエリを作成する必要がある場合、BINARYを使用して行うことは非常に容易であることである...など、

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

を「VALUE」、「値」、「値」を返します。ジェームズ優れた答えを向上させるために

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

:バイト比較でバイトを強制的にオペレータ、

ではなく、一定の前にBINARYを入れた方がよいでしょう:

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

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

+0

「LIKE」に追加するには? –

+0

@PurushotamrawatはちょうどLIKEで置き換えられます。SELECT * FROM 'table' WHERE' column' LIKE BINARY '%value%' – NVG

16

答えが正しいとはいえ、あなたの列が大文字と小文字を区別する文字列を保持する場合は、the documentationを読んでそれに応じてテーブル定義を変更することをお勧めします。これは私の意見では、あなたのクエリを調整する優先である

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

:として私の場合は

これは私の列を定義するに達しました。

+1

私は確かに私が確かに修正するように編集しました。あなたが言いたいことの私はあなたに通知する必要があるように感じます(そして2文字の変更であるため、サイトはあなたに自動的に通知しません)。あなたがその変更に満足しているとすれば、私のコメントには古くなったとフラグを立てて、気をつけてください。 (そして、もし私がうんざりしたら、私に叫んでください。) –

+1

これは受け入れられた答えでなければなりません。 – mathheadinclouds

関連する問題