如何在SQL中选择聚合行?

  • 本文关键字:选择 SQL sql sql-server
  • 更新时间 :
  • 英文 :


我在SQL Server中有一个汇总列的表。目标是:显示包含街道A或b的任何一行

<表类> 名称 以及 Mike A街,B街,C街 史密斯街B吉米街C

您应该去掉这种糟糕的结构,以便将来以更好的形式存储数据。

无论如何,按照您使用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"功能,但这可能会增加计算成本。

相关内容

  • 没有找到相关文章