【发布时间】:2015-08-06 13:06:44
【问题描述】:
我正在编写一个宏变量,旨在生成用户在提示中指定的有效 SQL WHERE 子句。假设我们有 3 个变量 X、Y、Z 等。用户可以为每个变量指定过滤器,宏变量如下所示:
a = x eq 1 and y eq 1 and z eq 1;
然后进入 WHERE 子句。 但如果用户只指定,假设 Y 的过滤器看起来像:
a = and y eq 1 and
我希望它看起来像:
a = y eq 1
这就是为什么我想在表达式开始或结束时以某种方式删除操作数“AND”(它可能多次开始或结束它,例如,如果我们只拟合 Z 变量,它看起来像):
a = and and and z eq 1
我想用正则表达式可以很容易地完成,但由于我是新手,有没有人愿意帮助我? ;)
【问题讨论】:
-
您已经有了很好的解决方案。根据用户的复杂程度,有时您可以只使用一个 WHERE 参数,并让用户编写他们想要的任何表达式作为单个提示的值,而不是为表达式的每个部分传递值。对于老练的用户,这为他们提供了更大的灵活性,当然代价是要求他们编写正确的表达式。