检查sql server中字符串中是否存在子字符串

flmtquvp  于 2021-07-27  发布在  Java
关注(0)|答案(2)|浏览(579)

我在数据库中有一列具有以下值:

1##,##7##,

1##,##3##,##5##,

我需要检查##3###,是否存在。
我试着用like从句

declare @MyCSharpParameter

set @MyCSharpParameter = '##3##,##4##'

select * from myTable where col like '%@MyCSharpParameter%'

但是,它不能正常工作,因为mytable没有“##3###,###4###”,它有##3###,##5##,
任何帮助请检查它作为单独的数字,并找到3。

8oomwypt

8oomwypt1#

如果您使用的是sql server 2016或更高版本,这里有一种方法 string_split ```
declare @MyCSharpParameter nvarchar(50);
set @MyCSharpParameter = '##3##,##4##';

create table t (col varchar(100));

insert into t
values('##1##,##7##'),('##1##,##3##,##5##');

select *, case when b.value is not null then 'yes' else 'no' end as found
from t a
left join string_split(@MyCSharpParameter, ',') as b on a.col like '%'+b.value+'%';

演示
slhcrj9b

slhcrj9b2#

你可以使用 exists 子查询:

select t.*,
       (case when exists (select 1
                          from string_split(a.col, ',') s1 join
                               string_split(@MyCSharpParameter, ',') s2
                               on s1.value = s2.value
                         )
              then 'yes' else 'no'
        end)
from t;

如果存在多个匹配项,则不会返回重复的行。

相关问题