在任何SQL方言中,是否可以對操作符進行參數化?是否可以在SQL中參數化運算符?
我希望能夠做到以下幾點:
if(x == y)
{
operator = '<=';
}
else
{
operator = '=';
}
,然後使用在一份聲明:
SELECT a FROM b WHERE number :operator 10
我不能讓這個在MySQL做了(什麼我正在使用),但我想知道這是否可能在任何方言。
在任何SQL方言中,是否可以對操作符進行參數化?是否可以在SQL中參數化運算符?
我希望能夠做到以下幾點:
if(x == y)
{
operator = '<=';
}
else
{
operator = '=';
}
,然後使用在一份聲明:
SELECT a FROM b WHERE number :operator 10
我不能讓這個在MySQL做了(什麼我正在使用),但我想知道這是否可能在任何方言。
不,你不能讓運營商直接的參數,而其他的示例顯示了它周圍的方式,通過傳遞代表你的代碼分支的選擇的字符串。
要記住關於SQL語句準備的重要一點是,沒有可執行文件可以參數化。唯一可以佔位符的是一個實際值。任何會影響語句編譯的方式都不能作爲參數。
(至少:SQL服務器) 你可以做到這一點作爲一個字符串,然後
使用在命令 「選擇案例」
CASE input_expression WHEN when_expression THEN result_expression [。 ..n] [ELSE else_result_expression] END 搜索CASE表達式: CASE WHEN布爾表達式THEN result_expression [...] [ELSE else_result_expression] END
WHERE CASE WHEN @運算符= '< =' THEN數< = 10 ELSE數= 10 END
建立動態SQL
可以使參數表示列入數字下方的範圍:
if(x == y) {
less = 1
} else {
less = 0;
}
使用參數表情:
SELECT a FROM b WHERE (number < 10 and :less = 1) or (number = 10)