在SQL Server中检查一个字符串是否存在于另一个字符串中
在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。
如果您正在使用SQL Server 2016或更高版本,可以使用string_split
函数来检查一个字符串是否存在于另一个字符串中。
首先,声明一个nvarchar(50)类型的变量,命名为n,赋值为'##3##,##4##'。然后创建一个名为t的表,该表包含一个名为col的varchar(100)类型的列。接下来,向表t中插入两条记录,分别为'##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(n, ',') as b on a.col like '%'+b.value+'%';
上述查询语句使用左连接将表t与通过string_split
函数返回的结果集进行连接。在连接条件中,通过在表t的列col的值前后添加通配符%以及使用string_split
函数返回的b.value值,来判断b.value是否存在于col中。如果存在,则将found列的值设为'yes',否则设为'no'。
然而,如果在SQL Server 2017中执行上述代码时,会出现"Invalid object name 'string_split'"的错误消息。为了解决这个问题,可以参考以下两个Stack Overflow链接:
- stackoverflow.com/q/1362531/9947159
- stackoverflow.com/q/47205829/9947159
这些链接可能会提供关于如何解决在SQL Server 2017中使用string_split
函数的问题的帮助。