SQL Server 2005で複数の値を持つlike条件を使用するにはどうすればよいですか?

like-keyword sql sql-server sql-server-2005 tsql
SQL Server 2005で複数の値を持つlike条件を使用するにはどうすればよいですか?

nvarchar(1000)列の一部のテキストマッチングに基づいてレコードを除外する必要があります。 テーブルには40万件を超えるレコードがあり、成長しています。 今のところ、私はLike条件を使用しています:

SELECT
    *
FROM
    table_01
WHERE
    Text like '%A1%'
    OR Text like '%B1%'
    OR Text like '%C1%'
    OR Text like '%D1%'

回避策はありますか?

  10  1


ベストアンサー

SELECT
    *
FROM
    table_01
WHERE
    Text like '%[A-Z]1%'

これにより、テキストにA1、B1、C1、D1、…​が含まれているかどうかがチェックされます。

8


サブ文字列の正確な位置がわかっている場合は、次を試すことができます。

SELECT
    *
FROM
    table_01
WHERE
    SUBSTRING(Text,1,2) in ('B1','C1','D1')

5


msdnで* LIKE *をご覧ください。

詳細を1つの* LIKE *句に結合することで、フィルターの数を減らすことができます。

SELECT
    *
FROM
    table_01
WHERE
    Text like '%[ABCD]1%'

4


テーブルのその列に「FULLTEXT INDEX」を作成できる場合(パフォーマンスとスペースに関する多くの調査を前提としています)、テキストマッチングのパフォーマンスが大幅に改善される可能性があります。 このhttp://msdn.microsoft.com/en-us/library/ms142571.aspx[link]にアクセスして、「FULLTEXT SEARCH」とは何であるか、およびこのhttp://msdn.microsoft.com/en-usを確認できます。 /library/ms187317.aspx[link]で、「FULLTEXT INDEX」の作成方法を確認してください。

0


SQL Server Profiler Trace Templateの `DatabaseName`列のフィルターで2つの異なるデータベースを許可できるように、これを行う必要がありました。

できることは、「いいね」句の本文を入力することだけです。

John Hartscock’s answerのリファレンスを使用して、like句が一種の限定された正規表現パターンを使用していることがわかりました。

OPのシナリオについては、https://stackoverflow.com/a/4855860/2449863 [MSMSに解決策があります]。

データベースABCOne、ABCTwo、およびABCThreeが必要であると仮定して、各文字に対して本質的に独立したホワイトリストを作成します。

Like ABC[OTT][NWH][EOR]%

どの文字列セットにも簡単に拡張できます。 最後のパターンはABCOwe、ABCTnr、またはABCOneHippotamusにも一致しますが、可能な値の限られたセットをフィルタリングする場合は、うまく機能する可能性が十分にあります。

別の方法として、[[^] `演算子を使用して、受け入れられない文字のブラックリストを提示することもできます。

0


タイトルとURLをコピーしました