sql - 检查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。
解决方案
您可以使用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;
如果有多个匹配项,这不会返回重复的行。
推荐阅读
- kubernetes - 删除的 k8s secret 的数据在更新后仍然存在
- python - Python-requests-get-fails-with-403-forbidden-even-after-using-headers-and-session - PYTHON 3.8
- javascript - 如何对同一个数组元素进行两次操作?
- r - 根据另一个表中的开始和结束日期填充一个表中的新列
- c - 将前导“零”添加到 C 中没有库的数字
- xml - XML 模式模式,符号范围
- reactjs - AMP:在使用样式化组件的项目中导入标准 css 文件时缺少样式
- javascript - NodeJS 14+ 使用带有 tls 本机包的 RC4-MD5 密码算法
- keras - keras层中的简单计算
- mysql - SQL:左连接与分组连接的行