按数组值过滤行

如果将行中的标记列表存储为逗号分隔值,则 STRING_SPLIT 函数可以将标记列表转换为值表。 CROSS APPLY 使你可以将 STRING_SPLIT 函数解析的值与父行 连接

想象一下,你有一个 Product 表,其中包含一系列逗号分隔标记(例如 promo,sales,new)。通过 STRING_SPLIT 和 CROSS APPLY,你可以使用其代码加入产品行,以便按标记过滤产品:

SELECT *
FROM Products p 
     CROSS APPLY STRING_SPLIT( p.Tags, ',' ) tags
WHERE tags.value = 'promo'

对于每一行,标签单元格的值将提供给将返回标签值的 STRING_SPLIT 函数。然后,你可以按这些值过滤行。

注意:SQL Server 2016 之前, STRING_SPLIT 函数不可用 ****