3

string を持つことができるテーブルに列がありCSVます。外部結合の ON 句の一部である LIKE を使用して、これらすべての値に対してクエリを実行したいと考えています。

DECLARE @to VARCHAR(max) = (SELECT value FROM dbo.table WHERE id = 'key');
DECLARE @t table ( value varchar(max) )
INSERT INTO @t SELECT item FROM fn_csv_splitstring ( @to , ',' )

すべての CSV 値を取得したら、一時テーブルの各値を、以下の select のような LIKE キーワードの式として使用したいと考えています。

 SELECT * FROM 
 dbo.table e 
 where e.value LIKE '%' + (SELECT value FROM [@t]) + '%'

正確なステートメントは左外部結合ステートメントで使用され、ON 句は 2 つのテーブル行 ID e.id = t.idをリンクし、追加の AND 式があります AND e.value LIKE 'col%'。この時点で、一時テーブルのすべての行を束OR LIKE '%'または何かとして持つことができる必要があります。として機能するLIKE '%' + (SELECT value FROM [@t]) + '%'

INキーワードを試してみましたがIN、完全一致でのみ機能し、ワイルドカードでは機能しないようです。

前もって感謝します。

4

1 に答える 1

1

EXISTSを使用して、e.valueが任意のt.value(ワイルドカード)に類似しているかどうかを確認します

SELECT *
FROM dbo.table e
WHERE EXISTS (
    SELECT *
    FROM @t t
    WHERE e.value LIKE '%' + t.value + '%')
于 2012-10-01T12:27:45.650 に答える