修复您的数据模型!造成这种情况的原因有很多。
但是,如果您卡在上面,可以使用:
select t.*
from t
where ',' + neighbor + ',' like '%,3,%';
您也可以使用string_split()
取消嵌套值:
select t.*
from t cross apply
string_split(t.neighbor, ',') s
where s.value = '3';
您可以将STRING_SPLIT()
用作
SELECT *
FROM Data
WHERE Region IN
(
SELECT Value
FROM STRING_SPLIT((SELECT Neighbor FROM Data WHERE Region = 3), ',')
);
查询将返回0行,因为表中没有区域标记为区域3的邻居。
如果将(3, 'Name3', '5,8,12'),
更改为(3, 'Name3', '1,2'),
,它将返回区域1和2,因为它们是区域3的邻居。
这里是db<>fiddle。