where句で大文字小文字を区別しないSQLクエリ(MS SQL Server)を作成するにはどうすればよいですか?SQLサーバはwhere式で大文字小文字を区別しません
SELECT * FROM myTable WHERE myField = 'sOmeVal'
私は結果があなたには何のデータベースの場合
where句で大文字小文字を区別しないSQLクエリ(MS SQL Server)を作成するにはどうすればよいですか?SQLサーバはwhere式で大文字小文字を区別しません
SELECT * FROM myTable WHERE myField = 'sOmeVal'
私は結果があなたには何のデータベースの場合
SQL Serverデータベースの既定の構成では、文字列比較は、大文字と小文字を区別しません()。データベースがこの設定をオーバーライドする場合(代替照合を使用)、照会で使用する照合の種類を指定する必要があります。
SELECT * FROM myTable WHERE myField = 'sOmeVal' COLLATE SQL_Latin1_General_CP1_CI_AS
私が提供した照合は単なる例であることに注意してください。 SQL Serverの照合の詳細については、hereを参照してください。
を無視して戻って来てほしいですか? MS SQL Serverでは、データベース全体の設定です。または、COLLATEキーワードを使用してクエリごとにオーバーライドできます。
通常、文字列比較では大文字と小文字が区別されません。データベースが敏感な照合を小文字に設定されている場合は、大文字小文字を区別しないものを使用するように強制する必要があります。
SELECT balance FROM people WHERE email = '[email protected]'
COLLATE SQL_Latin1_General_CP1_CI_AS
あなたはそのようなvarbinary型にキャストし、大文字と小文字が区別を強制することができます
SELECT * FROM myTable
WHERE convert(varbinary, myField) = convert(varbinary, 'sOmeVal')
これは機能的ですが、これはお勧めできません。並べ替えと文字列の比較を管理する照合があります。 –
@AdamRobinsonは "文字列の比較"についてはこれではありませんか? – Fandango68
私は他の場所で別の解決策を見つけた。つまり、
upper(@yourString)
を使用するが、ここで誰もが、それはとにかくケースを無視しているため、SQL Serverで、それは問題ではない、と言っていますか?私たちのデータベースが大文字と小文字を区別していることは確かです。
データベースが大文字と小文字を区別できるのは間違いありませんが、必要であってもこれはかなり非効率的です。 COLLATEは使用するキーワードです。 – mjaggard
それを持ってくれてありがとう、@ mjaggard。あなた、または私の答えを落とすように見える人は、私のような答えを探して見つけた自分のような人のために精巧になることを願っています。 – Danny
完全に合理的な説明であるので、これをアップしました。あまりにも多くのオーバーヘッドが発生します。文字列に文字列が含まれていて、照合順序がわからない場合はどうなりますか?ラテン語1は、厄介なコード体系です。あなたの文字列にアポストロフィがあると、意味のある結果が得られます(O'Brienのように)。 – eggmatters
いいえ、LIKE
を使用すると動作しません。 LIKE
は、指定したパターンと正確に一致する値を検索します。この場合、LIKE
は 'someval'ではなく 'sOmeVal'というテキストのみを検索します。
実践的な解決策は、LCASE()
機能を使用しています。 LCASE('sOmeVal')
は、テキストの小文字の文字列 'someval'を取得します。あなたが比較の両側のために、この機能を使用する場合、それは動作します:あなたの「sOmeVal」「someval」(たとえば、「Somevalの他のすべての表記と一致するように
SELECT * FROM myTable WHERE LCASE(myField) LIKE LCASE('sOmeVal')
が
文は、2つの小文字の文字列を比較します'、' sOMEVA1 'など)。
照合されたSQL Serverインストールの99.9%で、LIKEは大文字と小文字を区別しません。 – RichardTheKiwi
誰かが私よりも速いように見えます:-) –
+1私はあなたの簡単な(そしてスクロールバーなしの)答えをもっと気に入っていました。 –