通过通配符使用LIKE和IN进行SQL查询
我有一个数据库表,用户可以在其中使用大量变量筛选单个列,目前我的sql查询字符串如下所示:通过通配符使用LIKE和IN进行SQL查询,sql,select,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
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个参数的fill和get方法时
有没有更好的方法(比如使用IN命令,所以我只需要一个参数)?也许
正则表达式
可以帮助您:
SELECT *
FROM TABLE1
WHERE COLUMN1 LIKE '%[a-z]%'
如果使用sql server
请尝试CONTAINS
SELECT *
FROM TABLE1
WHERE CONTAINS(COLUMN1, 'APPLE AND ORANGE')
您可以找到更多信息。也许
正则表达式将帮助您:
SELECT *
FROM TABLE1
WHERE COLUMN1 LIKE '%[a-z]%'
如果使用sql server
请尝试CONTAINS
SELECT *
FROM TABLE1
WHERE CONTAINS(COLUMN1, 'APPLE AND ORANGE')
您可以找到更多信息。如果这是您应该查看的Microsoft SQL server,或者您正在使用SQL 2012。有许多方法可以比相似匹配更有效地搜索单词。如果您使用的是Microsoft SQL server,或者您使用的是SQL 2012,那么您应该查看这些方法。有许多方法可以比相似匹配更有效地搜索单词。这是不等价的:例如,他的查询将捕获字母数字值,而您的正则表达式不会。这是不等价的:例如,他的查询将捕获字母数字值,而您的正则表达式不会。类似于-@BillKarwin有一个很好的答案()我曾经做过类似的事情。@Tony-你必须更具体一点:“用户可以使用大量变量筛选单个列”-哪些变量?请提供一些有效输入的示例,以及刚刚更新的问题,以使其更清晰。您在这里实际想做什么?如果你在一个专栏中搜索单词,你可能想考虑一个全文索引。< TabLE1中的代码>选择*,其中包含(CulnN1,‘橙子’或苹果’或‘西红柿’)< /C> >将返回所有包含这些词的所有列,类似于-@ BillKarwin有一个很好的答案。我曾经做过类似的事情。@Tony-你必须更具体一点:“用户可以使用大量变量筛选单个列”-哪些变量?请提供一些有效输入的示例,以及刚刚更新的问题,以使其更清晰。您在这里实际想做什么?如果你正在搜索一个列中的单词,你可能想考虑一个全文索引。< TabLE1中的代码>选择*,其中包含(CulnN1,橙子或苹果或西红柿)< /C> >将返回包含这些词的所有列。