下面是我的桌子,
create table t(
id int,
colParam varchar(max))
insert into t values(1,'["param1", "param2"]')
insert into t values(2,'["param2"]')
insert into t values(3,'["param1"]')
insert into t values(4,'["param2", "param3"]')
insert into t values(5,'["param1", "param2"]')
tried declare @str varchar(max) = 'param1'; Select * from t where colParam like '%'+ @str+'%'
its not working for
declare @str varchar(max) = 'param1,param2'; Select * from t where colParam like '%'+ @str+'%'
我想通过将colPar作为'param1,param2'传递行来选择行,因此它将导致我在colParam中包含param1和param2的所有记录
如果使用的是SQL Server 2016及更高版本,则可以使用STRING_SPLIT
。
一个表值函数,将字符串分成子字符串行,基于指定的分隔符。
所以您可以看起来像这样:
DECLARE @t TABLE
(
id int,
colParam varchar(max)
)
insert into @t values(1,'["param1", "param2"]')
insert into @t values(2,'["param2"]')
insert into @t values(3,'["param1"]')
insert into @t values(4,'["param2", "param3"]')
insert into @t values(5,'["param1", "param2"]')
SELECT
t.id
, s.col
FROM @t AS t
OUTER APPLY
(
SELECT
spl.value AS col
FROM STRING_SPLIT(
(SELECT _t.colParam FROM @t AS _t WHERE _t.id = t.id), ',') AS spl
)s