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

时间:2018-11-15 09:27:03

标签: sql sql-server-2016

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

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

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . index.html [L]
</IfModule>

2 个答案:

答案 0 :(得分:1)

在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较低版本中,您需要创建函数以获取结果

答案 1 :(得分:0)

您尝试这样做吗?

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