2 つの簡略化されたテーブルがあります (すべての列は ですvarchar
)。F2の一部の行には、T1_TAB
で区切られた複数の値が含まれて;
おり、以下に示すように区切り記号がまったくない行もあります (;
最初や最後に表示される場合もあります)。F2 in はT2_TAB
常に単一の値を持ちます。
1 つのテーブルからの単一選択と F2 列の可能性に基づいて、ether テーブルから行をプルできる必要があります。
T1_TAB
F0 | F2
--------------
1 ;30
2 ;10;20;30
3 ;20;30;
4 10
T2_TAB
F1 | F2
-------------
100 10
200 20
300 30
できます:
SELECT T1.F0
FROM T1_TAB T1
LEFT JOIN T2_TAB T2
ON T2.F2 LIKE '%' + T1.F2 + '%'
WHERE T2.F1 = '200'
これはむき出しの結果になります:
2
3
今、私は反対のことをする必要があります。例えば:
条件に基づいてWHERE T1.F0 = 3
、F1 がそれぞれ 200 と 300 の T2 行からプルする必要があります。どうにか分割する必要があると思います;20;30; 「;」によって 空白のトークンを無視して、実行時に各値を個別に照合するループを実行します。