質問
いな質問を私の維持、プログラマのためのクエリ"が1=1"という評価があります。
あの特典はないのか。
複製: なぜ人利用1=1のとSQL節?
この問いへの答えてみました。
Where句:
select * from table where 1=1 and sStatus not in ('status1','status2','status3')
なプログラミングや場合に表して以下のような操作にあります。直返します。
ご連のありたいと思いるかどうかが目的んが書き換え、1=1の場合は不要です。
解決
これは、動的なクエリましたか?オプションであるパラメータに基づいて動的にクエリを構築するときに時々、それは便利です。
他のヒント
あなたが動的にwhere句を構築している場合、あなたは少し怠惰することができ、あなたが追加したすべての句は、接頭辞「AND」できることを前提とし、例えば
$str="select foo from bar where 1=1";
if ($filter1)
{
$str.=" and col1='frobozz'";
}
、それが簡単にあなたのライブになります:
string sql = "SELECT * FROM table WHERE 1=1";
if (someflag) {
sql += " AND valid = 1";
}
if (someotherflag) {
sql += " AND special = 1";
}
execute(sql);
WHERE 1 = 1
がなければ、あなたは、それぞれの場合には、それはあなたが追加(そしてWHERE ...
を使用)、または第一の制限がありますかどうかを確認しなければならないあなたは既に前にいくつかの他の制限を追加した場合(そしてAND ...
を追加します)。
私は、動的にこれを使うところ、私はいくつかの怠惰なプログラミングをやってると句は、私が今必要かどうかを判断するために空であるか、常にチェックしたくない句を「AND」私のダイナミック節間ます。
これは本当に唯一の動的なクエリで理にかなっています。あなたはすでにあなただけ追加することができWHEREがあるかどうかを確認するために代わりになるのループ内のパラメータを追加する場合列=値毎回ます。
私はあなたが常に真の結果をしたいとき、これには2つの理由を見てきた、またはの「条件=値」の文に追加
任意の番号があるように起こっているときることは非常に興味深い...WHERE条項を含まない1=1?見本にはSQLインジェクションの試みは、WHERE節が
xyz="something" OR 1=1;
手段として、常にリストを返します結果が得られます。
っているのか教えてくださいえこのクエリではこの質問に対する答えですか?
- ニコラス