SQL使用大于/小于like和通配符

时间:2015-06-11 15:17:47

标签: sql wildcard embedded-database vistadb

我目前对如何实施某件事感到有点困惑。基本上我有一个嵌入式数据库(真的很讨厌JOIN,性能方面)以及在搜索字段中添加通配符机制的要求。目前,搜索字段允许用户输入日期以及使用以下内容匹配的一些金额/收入: SELECT * FROM table where date >= '{0}' AND date <= '{1}'

编辑:这是因为.NET适配器在运行时生成SQL,并且可以使用各种AND子句组合。可能是用户只输入{0}的值,可能只为{1}输入一个,可以输入两个,也可以输入无。因此,除非我开始一些严肃的复兴,否则BETWEEN可能会陷入困境。

我想使用关键字LIKE来实现类似的东西:

SELECT * FROM table where date >= LIKE '{0}' AND date <= LIKE '{1}' {0}类似于"2015.01*"

我认识到Date可能有点多,但使用金额或收入这样的东西可能吗?如果是这样,那么正确的语法是什么?谷歌不是我的朋友......

提前感谢您的所有帮助!

1 个答案:

答案 0 :(得分:3)

LIKE正在进行正则表达式匹配,因此例如LIKE '%a'匹配'1a',但也匹配'2a'。从这一点可以清楚地看出>= LIKE '...'是不可能的。

您可以做的是从日期开始构建一个字符串,以便您拥有例如'YYYYMMDD',然后您可以轻松地与LIKE 'YYYYMM%'>= 'YYYYMM'进行比较。

我仍然不明白为什么你不只是使用你已经提出的SELECT * FROM table where date >= '{0}' AND date <= '{1}'(或使用between的查询的变体)。