使用LIKE和IN使用通配符的SQL查询

时间:2012-10-11 21:24:04

标签: sql select

我有一个数据库表,用户可以使用大量变量过滤单个列,目前我的SQL查询字符串如下所示:

SELECT * 
FROM TABLE1
WHERE COLUMN1 LIKE '%APPLE%'
AND COLUMN1 LIKE '%ORANGE%'
AND COLUMN1 LIKE '%GRAPE%'
AND COLUMN1 LIKE '%LEMON%'
AND COLUMN1 LIKE '%LIME%'
AND COLUMN1 LIKE '%TOMATO%'
AND COLUMN1 LIKE '%POTATO%'
...

如果我在表适配器中使用参数化查询字符串来创建填充并获取最终有20个参数的方法,那么这将变得很难实现。

有没有更好的方法(比如使用IN命令,所以我只需要一个参数)?

2 个答案:

答案 0 :(得分:2)

也许regular expressions会帮助您:

SELECT * 
FROM TABLE1
WHERE COLUMN1 LIKE '%[a-z]%'

如果您使用sql-server尝试CONTAINS

SELECT * 
FROM TABLE1
WHERE CONTAINS(COLUMN1, 'APPLE AND ORANGE')

Here您可以找到更多信息。

答案 1 :(得分:1)

如果这是Microsoft SQL服务器,如果您使用的是SQL 2012,则应该查看Full-Text Search (SQL Server)Full-Text Search (SQL Server)。有许多方法可以比LIKE匹配更有效地搜索单词。< / p>