我目前对如何实施某件事感到有点困惑。基本上我有一个嵌入式数据库(真的很讨厌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可能有点多,但使用金额或收入这样的东西可能吗?如果是这样,那么正确的语法是什么?谷歌不是我的朋友......
提前感谢您的所有帮助!
答案 0 :(得分:3)
LIKE
正在进行正则表达式匹配,因此例如LIKE '%a'
匹配'1a',但也匹配'2a'。从这一点可以清楚地看出>= LIKE '...'
是不可能的。
您可以做的是从日期开始构建一个字符串,以便您拥有例如'YYYYMMDD',然后您可以轻松地与LIKE 'YYYYMM%'
或>= 'YYYYMM'
进行比较。
我仍然不明白为什么你不只是使用你已经提出的SELECT * FROM table where date >= '{0}' AND date <= '{1}'
(或使用between
的查询的变体)。