1

どのSQL方言でも、演算子をパラメーター化することは可能ですか?

私は次のことができるようになりたいです:

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

そして、それを準備されたステートメントで使用します。

SELECT a FROM b WHERE number :operator 10

MySQL(私が使用しているもの)ではこれを行うことはできませんが、これがどの方言でも可能かどうか疑問に思っています。

4

3 に答える 3

2

いいえ、演算子を直接パラメーターにすることはできません。他の例では、選択したコード ブランチを表す文字列を渡すことで、それを回避する方法を示しています。

SQL ステートメントの準備について覚えておくべき重要なことは、実行可能なものはパラメーター化できないということです。プレースホルダーを持つことができるのは、実際の値だけです。ステートメントのコンパイル方法に影響を与えるものは、パラメーターにすることはできません。

于 2012-12-13T14:02:41.897 に答える
1

(少なくとも:SQLサーバー)文字列として実行してから

  • コマンドで「ケース選択」を使用する

    CASE 入力式 WHEN when_expression THEN 結果式 [ ...n ] [ ELSE else_result_expression ] END 検索された CASE 式: CASE WHEN Boolean_expression THEN 結果式 [ ...n ] [ ELSE else_result_expression ] END

    WHERE CASE WHEN @operator='<=' THEN number<=10 ELSE number=10 END

  • 動的 SQL の構築

于 2012-12-13T12:28:48.167 に答える
1

パラメータが数値の下の範囲を含むことを意味するようにすることができます。

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

パラメータを式で使用します。

SELECT a FROM b WHERE (number < 10 and :less = 1) or (number = 10)
于 2012-12-13T12:37:31.063 に答える