sql while循环检查条件包含字符串中的单词

sql while循环检查条件包含字符串中的单词,sql,sql-server-2016,Sql,Sql Server 2016,我有一个while循环,需要从字符串检查循环条件。字符串是一组用逗号分隔的单词,例如:“abc、bcd、gfd” 我想检查字符串中是否包含特定单词。如果字符串中存在一个单词,那么我想进入循环并执行它。我尝试使用CHARINDEX,但它不提供全文搜索 DECLARE @string varchar(100) = 'abc, bcd, hbg' while(contains(@string ,'abc')) BEGIN /// END 在SQL server 2016及以上版本中:

我有一个while循环,需要从字符串检查循环条件。字符串是一组用逗号分隔的单词,例如:“abc、bcd、gfd”

我想检查字符串中是否包含特定单词。如果字符串中存在一个单词,那么我想进入循环并执行它。我尝试使用CHARINDEX,但它不提供全文搜索

DECLARE @string varchar(100) = 'abc, bcd, hbg'

while(contains(@string ,'abc'))

BEGIN

    ///

END

在SQL server 2016及以上版本中:

DECLARE @string varchar(200) = 'abc,bcd,hbg'
DECLARE @string1 varchar(200) = 'abc'

select value from string_split(@string,',')
where value=@string1;

在SQL server较低版本中,您需要创建函数以获得结果

您是否尝试这样做

DECLARE @list varchar(8000)
DECLARE @pos INT
DECLARE @len INT
DECLARE @value varchar(8000)

SET @list = 'abc, bcd, hbg,abc,'

set @pos = 0
set @len = 0

WHILE CHARINDEX(',', @list, @pos+1) > 0
BEGIN
        set @len = CHARINDEX(',', @list, @pos+1) - @pos
        set @value = SUBSTRING(@list, @pos, @len)            

        IF(@value = 'abc')
         BEGIN
            PRINT @value
            --DO YOUR MAGIC HERE        
         END
        set @pos = CHARINDEX(',', @list, @pos+@len) +1
END 

您使用的是哪种数据库管理系统?(该代码尝试是特定于产品的。)Microsoft SQL Server。。。代码仅用于显示一个示例while(@string类似于“%abc%”)??@huMpty duMpty我需要精确的单词搜索。。当使用“类似”时,即使“%ABCD%”也会考虑。但这不是必需的您使用了哪个sql版本?sql server 2016