我在SQL Server中有一个汇总列的表。目标是:显示包含街道A或b的任何一行
您应该去掉这种糟糕的结构,以便将来以更好的形式存储数据。
无论如何,按照您使用STRING_SPLIT
的意图,这将做:
SELECT name, adresses
FROM yourtable
WHERE EXISTS
(SELECT *
FROM STRING_SPLIT(adresses, ',')
WHERE value IN ('Street A', 'Street B'));
你应该阅读文档,那里有解释。
使用示例数据测试成功:db<>fiddle
我相信你可以使用一些" contains"列地址的功能。取决于列是varchar/text类型的列,还是数组类型的列。
然而,我会尝试在更概念化的层面上解决这个问题。
在关系数据库中,这被称为"多对一"。的关系。一个地址可能只有一个与之相关的Person,而Person可能列出了许多address。因此,我将制作单独的表。然后,您可以轻松地在地址表中搜索A和B,并找到person表的相关外键。
否则,您可以坚持使用"contains"功能,但这可能会增加计算成本。