2017-07-18 7 views
1

私はcoldfusion Find()関数を使用して、値にM(大文字)の文字が含まれているかどうかを確認しています。私はcoldfusionの代わりにSQLのクエリでこれをやりたいと思います。私が見つけた解決策はほとんどありませんが、それが大文字の世話をするかどうかはわかりません。また、私は約80の列を持っているので、私はクエリを遅くしたくないので、使用する最良の機能は何か分かりません。ここに私がこれまで持っていたものがあります:列値SQL 2008で文字列を検索しますか?

CASE 
    WHEN CHARINDEX ('M', column1) > 0 THEN 'T' 
     ELSE 'F' 
    END AS column1 

この機能またはもっと良い解決策についてもっと知っている人は、私に知らせてください。ありがとうございました。

+0

あなたは 'upper'機能を試してみましたか? – samkart

+2

大文字と小文字の区別は照合に依存します。これを念頭において、 'charindex()'は確かに多くのメソッドの1つです。あなたの意図する結果は何でしょうか?これはこの質問を大きく助けるでしょう。 – scsimon

+0

@ ShubhradeepMajumdar私は上部機能を試していません。クエリが遅くなるかどうかはわかりませんでした。 –

答えて

2

デフォルトでは、SQL Serverはではなく、では大文字と小文字が区別されます。大文字と小文字を区別して検索する場合は、大文字と小文字を区別する照合を使用する必要があります。

照合大文字小文字の区別のために使用される:COLLATE Latin1_General_CS_AS

ここでは、大文字と小文字を区別した検索に調整し、あなたのクエリは、です:

CASE 
    WHEN CHARINDEX ('M', column1 COLLATE Latin1_General_CS_AS) > 0 THEN 'T' 
     ELSE 'F' 
    END AS column1 
+0

私はテストしましたが、これは期待通りに動作します。ありがとうございました。 –

+2

以上簡潔 'Select IIF(column1 LIKE '%M%' COLLATE Latin1_General_CS_AS、 'T'、 'F')AS column1' –

+0

@MartinSmithあなたの提案がより簡潔であるという意味で正しいのですが、 IIFがANSI標準の機能ではないので、SQL ServerへのMS Accessの移行の目的で作成されています。個人的には、私もそれを使用します。 – Eli

関連する問題