首页 > 解决方案 > 检查sql server中的字符串中是否存在子字符串

问题描述

我在数据库中有一个包含这些值的列:

##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。

标签: sqlsql-serverado.net

解决方案


您可以使用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;

如果有多个匹配项,这不会返回重复的行。


推荐阅读