0

2 つの複数値文字列を互いに比較して、一方の値がもう一方の文字列に存在するかどうかを確認したいと考えています。

パイプで区切られた値を持つ nvarchar 行を持つテーブルがあります。

'値1|値2|値3'

コンマ区切りの文字列を持つ nvarchar 変数もあります。

'値2,値3'

これまでテーブルの列には 1 つの値がありましたが、テーブル関数を使用して変数に文字列を吐き出し、IN 句を使用して値が生成されたテーブルにあるかどうかを確認しました。例えば

select * from table1
    WHERE column in (select val from dbo.split(@variable,','))

列にさらに値が含まれている場合、これは機能しません。

select * from table1    
    WHERE (select val from dbo.split(column,'|')) in (select val from dbo.split(@variable,','))

ここでは、生成された 2 つのテーブルを互いに比較しようとしますが、失敗します。結合を使用してこれを試しましたが、これを適切に行う方法が見つかりません。MSSQL 2008R2 を使用しています

4

1 に答える 1

1

多分これはあなたを助けることができます:

select * from table1 where exists 
(select * from 
    (select val from dbo.split(table1.column,'|')) a,
    (select val from dbo.split(@variable,',')) b 
where a.val=b.val)
于 2015-08-04T12:08:43.900 に答える