如何使用IN子句查询大量单词列表

时间:2014-03-12 22:12:42

标签: sql sql-server

我在SQL Server Management Studio 2008中工作。

我需要编写一个查询,在一个表中的几个字段中搜索大量的单词列表(大约50个单词)。我目前的想法是简单地编写一个IN子句来放入我的所有单词。但是,由于我必须搜索的单词数量,创建此IN子句可能会变得乏味。

有更好的方法吗?

我当前的查询类似于以下内容:

SELECT
x,
y
FROM Table1
WHERE 
x IN ('word1', 'word2', ... , 'wordx')
OR y IN ('word1', 'word2', ... , 'wordx')

3 个答案:

答案 0 :(得分:5)

你可以创建一个表(比方说word_table)并将所有单词存储在其中。 然后你可以简单地做

SELECT x, y
FROM Table1
WHERE 
   x IN (SELECT word FROM word_table) OR
   y IN (SELECT word FROM word_table)

答案 1 :(得分:5)

select t.*
from your_table t
left join word_table wx on wx.word = t.x
left join word_table wy on wy.word = t.y
where wx.word is not null 
   or wy.word is not null 

答案 2 :(得分:1)

正如其他人所提到的,word_table的用法。我首选的方法是EXISTS。

SELECT t.*
FROM your_table
WHERE EXISTS (SELECT 1 FROM word_table WHERE t.x=word OR t.y=word)