从varchar(50)列表中查找值包含单词的行

我正在从t-sql存储过程中收集数据,以导入到C#程序中。我想先缩小数据范围。 我的数据具有三个字段,这些字段描述了紧随其后的三个值。我只需要找到描述中有十几个关键字之一的字段即可。

我使用的是将所有带有值的字段都UNION,然后

...
AND (
        TEXT1234.accountvalue LIKE '%word1%'
     OR TEXT2345.accountvalue LIKE '%word1%'
     OR TEXT3456.accountvalue LIKE '%word1%'

     OR TEXT1234.accountvalue LIKE '%word2%'
     OR TEXT2345.accountvalue LIKE '%word2%'
     OR TEXT3456.accountvalue LIKE '%word2%'

     OR TEXT1234.accountvalue LIKE '%word3%'
     OR TEXT2345.accountvalue LIKE '%word3%'
     OR TEXT3456.accountvalue LIKE '%word3%'
...

现在,我正在尝试执行以下操作:

declare @wordList table (Word varchar(50))
insert into @wordList values ('%word1%'),('%word2%'),('%word3%')...

...
SELECT *
FROM [DB1].dbo.Table_info
WHERE account = 'TEXT1234'
AND accountvalue LIKE (SELECT * FROM @wordList)
...

(这是许多类似的UNION作品之一。这就是为什么我想使用单词列表,缩短代码并在将来更改的情况下将单词包含在一个地方的原因。)

或类似的东西:

SELECT *
FROM [DB1].dbo.Table_info
WHERE account = 'TEXT1234'
AND accountvalue CONTAINS (SELECT * FROM @wordList)
...

预期输出:

TEXT1234_account   TEXT1234_accountvalue       acct1234   acct1234_Value
TEXT1234           word3 something something   accT1234   48

TEXT3456_account   TEXT3456_accountvalue        acct3456   acct3456_Value
TEXT3456           Something word1 something    accT3456   48

请让我知道您是否需要更多代码来对此进行分析... (我已经不能简短地介绍了。)

fy5151 回答:从varchar(50)列表中查找值包含单词的行

使用EXISTS:

SELECT *
FROM [DB1].dbo.Table_info tbl
WHERE tbl.Account = 'TEXT1234'
AND EXISTS
(
    SELECT 0
    FROM @wordList wl
    WHERE tbl.AccountValue LIKE wl.Word
)
本文链接:https://www.f2er.com/3158297.html

大家都在问