0

我目前对如何实现某件事有点困惑。基本上我有一个嵌入式数据库(它真的很讨厌 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 可能有点多,但是使用金额或收入之类的东西这可能吗?如果是这样,正确的语法是什么?谷歌在这方面不是我的朋友......

提前感谢您的所有帮助!

4

1 回答 1

3

LIKE正在做正则表达式匹配,例如LIKE '%a'匹配'1a',但也匹配'2a'。由此可见,a>= LIKE '...'是不可能的。

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

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

于 2015-06-11T15:21:57.887 回答