我有 2 个简化表(所有列都是varchar
)。F2 中的某些行T1_TAB
包含多个由 分隔的值;
,有些根本没有分隔符,如下所示(有时也;
可能出现在开头和/或结尾处)。F2 inT2_TAB
始终只有一个值。
我需要能够根据一个表中的单个选择和 F2 列上的可能性从以太表中提取行。
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; 用“;” 并在运行时执行循环以分别匹配每个值,而忽略空白标记。