SQL-

2013-04-18 9 views
77


文字列を探して、私は表の以下のデータを持っていながら、ケースを無視
はSQLで
PriceOrderShippedInbound
PriceOrderShippedOutbound

をPriceOrderShipped私は、テーブル内の文字列を検索するクエリを記述する必要があります。文字列を検索する際には、大文字小文字を無視する必要があります。 SQL-

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%Priceorder%' 

が得られないのに対し、下記のSQLクエリ

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%PriceOrder%' 

については、上記のすべてのデータを提供します。

例: 'PriceOrder'や 'priceOrder'を検索すると動作しますが、 'priceorder'や 'Priceorder'は機能しません。 COLLATEを使用して以下のクエリを試しましたが、機能しません。どこに間違っているのか教えてください。

SELECT DISTINCT COL_NAME FROM myTable WHERE 
COL_NAME COLLATE latin1_general_cs LIKE '%Priceorder%' 

答えて

146

を使用し、このような何か -

SELECT DISTINCT COL_NAME FROM myTable WHERE UPPER(COL_NAME) LIKE UPPER('%PriceOrder%') 

または

SELECT DISTINCT COL_NAME FROM myTable WHERE LOWER(COL_NAME) LIKE LOWER('%PriceOrder%') 
+12

私はあなたがベストプラクティスとして大文字の大文字(大文字)を常に比較すべきだと思います。 Google "turkish i" – Traubenfuchs

5

照合にはおそらくSQL_Latin1_General_Cp1_CI_AS_KI_WIを使用してください。あなたの質問にあなたが明示的に大文字小文字を区別して指定したものです。

照合のリストhereが表示されます。

6

これと類似の質問を参照してくださいとケース鈍感で検索に答える - SQL server ignore case in a where expression

のようなものを試してみてください:

SELECT DISTINCT COL_NAME 
FROM myTable 
WHERE COL_NAME COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%priceorder%' 
+0

うまくいきませんでした。照合の前にSQLクエリが正しく終了していません。 – shockwave

+0

申し訳ありませんが、私は自分の答えを更新しました。ミゲル-F @ –

+0

。これも私のために正常に動作しているので、COL_NAME LIKE「%のpriceorderの%」 mytableは FROM DISTINCT COL_NAME を選択、それが正常に動作しているが、どのように 異なるん... – Ancee