2012-12-13 28 views
1

在任何SQL方言中,是否可以對操作符進行參數化?是否可以在SQL中參數化運算符?

我希望能夠做到以下幾點:

if(x == y) 
{ 
    operator = '<='; 
} 
else 
{ 
    operator = '='; 
} 

,然後使用在一份聲明:

SELECT a FROM b WHERE number :operator 10

我不能讓這個在MySQL做了(什麼我正在使用),但我想知道這是否可能在任何方言。

回答

2

不,你不能讓運營商直接的參數,而其他的示例顯示了它周圍的方式,通過傳遞代表你的代碼分支的選擇的字符串。

要記住關於SQL語句準備的重要一點是,沒有可執行文件可以參數化。唯一可以佔位符的是一個實際值。任何會影響語句編譯的方式都不能作爲參數。

1

(至少: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

1

可以使參數表示列入數字下方的範圍:

if(x == y) { 
    less = 1 
} else { 
    less = 0; 
} 

使用參數表情:

SELECT a FROM b WHERE (number < 10 and :less = 1) or (number = 10) 
相關問題