0

我有一个数据库表,用户可以在其中使用大量变量过滤单个列,目前我的 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 命令,所以我只需要一个参数)?

4

2 回答 2

2

也许regular expressions会帮助你:

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

如果您使用sql-server尝试CONTAINS

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

在这里您可以找到更多信息。

于 2012-10-11T21:25:23.973 回答
1

如果这是 Microsoft SQL Server,如果您使用的是 SQL 2012,您应该查看全文搜索 (SQL Server)全文搜索 (SQL Server)。有多种方法可以比 LIKE 更有效地搜索单词匹配。

于 2012-10-11T21:42:07.830 回答