9

では、LIMIT 句で負の値を使用するとどうなるでしょうか? 否定的な結果はありますか (少ししゃれが意図されています)?

これに関するドキュメントは見当たりませんし、MySQL フォーラムでも、思い出したように、sux.

背景: MySQL CE 5.5.20 を使用しています。int パラメーターを取り、それを LIMIT 句に使用するストアド プロシージャを作成しました。必要に応じてすべての行を返す方法が必要だったので、ストア プロシージャ/ルーチンの limit パラメータに -1 を渡そうとしましたが、うまくいきました。

4

2 に答える 2

8

ドキュメントによると、それは非負の整数でなければなりません

LIMIT句を使用して、SELECTステートメントによって返される行数を制限できます。LIMITは、1つまたは2つの数値引数を取ります。これらは両方とも非負の整数定数でなければなりません(プリペアドステートメントを使用する場合を除く)。

あなたが経験しているのは文書化されていないバグのように私には聞こえます。パラメータが文書化に必要なものと一致しない場合、mysqlはエラーをスローするはずです。

私の提案は、ストアドプロシージャで構文的に修正されたSQLを使用することです。ただし、すべてを表示するためのフラグとして負の整数を使用することもできます。このようなもの

IF myparam >= 0 THEN
    SELECT * FROM `mytable` LIMIT myparam;
ELSE
    SELECT * FROM `mytable`;
END IF;
于 2012-09-19T20:23:06.643 に答える
1

When using this on other versions of MySQL, it might generate an error.

The error in MySQL

于 2012-04-23T13:49:36.323 に答える