在任何SQL方言中,是否可以对运算符进行参数化?
我希望能够做到以下几点:
if(x == y)
{
operator = '<=';
}
else
{
operator = '=';
}
然后在准备好的声明中使用它:
SELECT a FROM b WHERE number :operator 10
我无法在MySQL(我正在使用的)中完成此操作,但我想知道这是否可以用任何方言。
答案 0 :(得分:2)
不,您不能直接将运算符作为参数,其他示例通过传入代表您选择的代码分支的字符串来向您展示它的方法。
要记住关于SQL语句准备的重要事项是,任何可执行文件都不能参数化。唯一可以拥有占位符的是实际值。任何会影响语句编译方式的内容都不能成为参数。
答案 1 :(得分:1)
(至少:SQL服务器) 您可以将其作为字符串,然后
在命令中使用“选择案例”
CASE input_expression 当when_expression THEN result_expression [... n]时 [ELSE else_result_expression] 结束 搜索CASE表达式: 案件 什么时候Boolean_expression THEN result_expression [... n] [ELSE else_result_expression] 结束
在@operator ='&lt; ='时的情况,那么数字&lt; = 10 ELSE number = 10 END
构建动态SQL
答案 2 :(得分:1)
您可以使参数表示包含数字下方的范围:
if(x == y) {
less = 1
} else {
less = 0;
}
在表达式中使用参数:
SELECT a FROM b WHERE (number < 10 and :less = 1) or (number = 10)