我正在从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
请让我知道您是否需要更多代码来对此进行分析... (我已经不能简短地介绍了。)