查询SQL字段是否包含多个值中的任何一个

Mat*_*att 9 sql sql-server stored-procedures sql-server-2008

我想查询SQL列的行是否包含多个值中的任何一个.

例如,返回表的列,其列A包含以下任何单词: ('cow','farmer','milk').

当你知道单词是什么时很容易,但是我想写一个sproc,我可以在任何字符串数组中输入,如果某行的A列包含任何一个,它将返回该行.

我希望能够提供:

('cow','farmer','milk')

要么

('cow','farmer','steak','yikes')

要么

('cow','farmer','three', 'pigs', 'wolf')
Run Code Online (Sandbox Code Playgroud)

它必须相对简单,但我不能为我的生活弄明白.我在SQL Server 2008上

Av *_*zur 13

一个简单的方法:

declare @candidates varchar = '|cow|farmer|three|pigs|wolf|'
select * from TableName where @candidates like '%|' + FieldName + '|%'
Run Code Online (Sandbox Code Playgroud)

在SQL 2008中执行此操作的最佳方法是使用表值参数.

  • 我认为OP需要其中FieldName*包含*其中一个单词的行 - 这将检查FieldName*是否等于*其中一个单词. (3认同)
  • 我正在努力让这个工作,并发现它是因为我的FieldName是一个nvarchar(64),我只是声明@candidates为nvarchar.如果我明确地声明(at)候选者是一个nvarchar(64),然后将它设置为一个列表,它可以工作,无论列表的大小. (2认同)