我有一个表,其中有一列包含逗号分隔值(CSV)字符串。
例如,值1、值2、值3
作为过滤器传入的是另一组CSV。
例如,值2、值3
因此,在上面的示例中,查询应该返回CSV列中包含任何筛选器值的任何记录。
- 示例**
declare @table table
(
rownum int,
csv nvarchar(300)
)
insert into @table values (1,'VALUE1, VALUE2, VALUE3')
insert into @table values (2,'VALUE1, VALUE2')
insert into @table values (3,'VALUE1, VALUE3')
insert into @table values (4,'VALUE3, VALUE4')
insert into @table values (5,'VALUE1, VALUE2, VALUE3')
insert into @table values (6,'VALUE3, VALUE4, VALUE2')
insert into @table values (7,'VALUE3')
declare @Filter nvarchar(50)
set @Filter = 'VALUE1,VALUE2'
select * from @table
因此,在上面的示例中,查询应该返回行1、2、3、5和6,因为它们都包含VALUE1或VALUE2。
5条答案
按热度按时间ffscu2ro1#
如果我能很好地理解它,这将解决它:
创建一个函数来执行拆分:
然后您可以执行以下操作:
我正在考虑“返回包含过滤器中任何calue的任何rown”的描述
anauzrmj2#
您可以使用PatIndex来找出字段中的模式。如下所示:
bttbmeg03#
现在呢?我根本没有使用任何用户定义的函数。
6ie5vjzr4#
试试这个-
hwazgwia5#
我刚刚使用STRING_SPLIT函数修改了@JoseTeixeira代码。