パラメータとしてMySQLクエリに比較演算子を渡す方法はありますか?
このクエリがあるとしましょう
SELECT * FROM `table1` WHERE `column1` > @p
そして代わりに、条件次第で>
合格したいです。を使用できますが、クエリをパラメータ化する必要があります。<
=
string.format()
また、演算子が 1 つだけ異なる限り、事前定義されたクエリを使用したくありません。
これを試して:
SET @MyQuery := CONCAT("SELECT * FROM table1 WHERE",@P);
PREPARE stmt1 FROM @MyQuery;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
@P の場合:
SET @P:= "> 1" OR SET @P:="=1" or other condition you need to put it
MySQL の準備済みステートメントは、変数のバインド値のみをサポートします。クエリ文字列の任意の部分の置換 (テーブル名であっても) はサポートされていません。つまり、SQL をクライアント上で動的に構築する必要があります。