在SQL Server中检查一个字符串是否存在于另一个字符串中

17 浏览
0 Comments

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

0
0 Comments

在SQL Server中,有时候我们需要检查一个字符串中是否存在一个子字符串。下面是一种使用exists子查询的方法:

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

这种方法不会返回重复的行,即使有多个匹配项。

以上就是解决在SQL Server中检查一个字符串中是否存在一个子字符串的方法。

0
0 Comments

如果您正在使用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函数的问题的帮助。

0