2011-10-11 5 views
0

名前のデータベースが大規模です。大文字と小文字の区別が間違っていると思います。私は別の例のために、この何度も/編集を実行する必要があるため は今、私は次を使用しています...SQL:データベース内の名前を正しく識別して修正します(可能な場合)

SELECT * 
    FROM myTable 
WHERE LastName LIKE '%Mcd%' COLLATE SQL_Latin1_General_Cp1_CS_AS 

さて、もちろん、これはinefficentです。私の考えは、問題を起こす可能性のある名前のリストを見つけ、可能ならば LIKE IN( 'case1'、 'case2'、 'case3'、 'case4'、...)

を入力してください。私が考えていない別の方法がありますか?

その他の場合略語(%。%)、ハイフン(% - %)、アポストロフィ(% '%)を確認する必要があると思います。

+0

'SQL_Latin1_General_Cp1_CS_AS'はSQL Server AFAIKですが、どのバージョンですか? –

+0

SQL Server 2008 R2を使用しています – daveomcd

答えて

1

あなたはmyTable複数回スキャンする必要がないようにするには

SELECT * 
    FROM myTable 
WHERE LastName LIKE '%Mcd%' or LastName LIKE '%Foo%' 

それとも

WITH T(Word) AS 
(
SELECT 'Mcd' UNION ALL 
SELECT 'Foo' 
) 

SELECT * 
FROM myTable 
JOIN T ON LastName LIKE '%' + Word + '%' 

を使用することができます。

の文字列を複数回使用すると、CLRと正規表現を使用できます。

関連する問題