0

私は名前の大規模なデータベースを持っており、間違った大文字と小文字を識別したいと思っています。今、私は以下を使用しています...

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

もちろん、これは非効率的です。さまざまなケースでこれを何度も実行/編集する必要があるからです。私の考えは、考えられる問題を提供する名前のケースのリストを見つけて、LIKE IN('case1'、'case2'、'case3'、'case4'、...)を実行することです。

それが可能であれば。私が考えていない別の方法はありますか?

チェックする必要があると考えている他のケースは、略語(%。%)、ハイフン(%-%)、およびアポストロフィ(%'%)です。

4

1 に答える 1

1

あなたが使うことができます

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 + '%' 

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

文字列を複数回処理しないようにするには、CLRと正規表現を使用できます。

于 2011-10-11T15:54:56.207 に答える