私がやりたいのは、特定の値(動的にロードされる)=特定の値の場合にのみwhere句を実行することです。例えば
IF ('<=' == '$dynamic_value') THEN WHERE...
これは可能ですか?($ dynamic値は<=、または> =のいずれかになります)
つまり、where句は、特定の値が発生したとき、または呼び出されたときにのみ使用したいと思います。
次のような句でCASE式を使用できます。WHERE
SELECT *
FROM tbl
WHERE
CASE '$dynamic_value'
WHEN '>=' THEN column_a >= column_b AND other_conditions
WHEN '<=' THEN column_a <= column_b AND other_conditions
ELSE 1
END
がまたはの$dynamic_valueいずれにも等しくない場合は、代わりに句によって使用されます。これは、基本的に句がまったくない(そしてすべてのレコードを返す)ようなものです。>=<=ELSE 1WHEREWHERE
PHPを使用しているようで、の値はまたは$dynamic_valueのみであるため、次のようにパラメータを直接挿入できます。>=<=
$sql = "
SELECT *
FROM tbl
WHERE column_a $dynamic_value column_b";
もちろん、ユーザー入力から来る場合は、がまたは$dynamic_valueのどちらであるかを確認していることを確認してください。>=<=
条件ではなくIF、これは通常、のブール論理で処理されWHEREます。動的な値を、ANDそれに対応する条件と一緒に一致させます。
WHERE
('$dynamic_value' = '<=' AND othercolumn = othercondition)
OR ('$dynamic_value' = '>=' AND othercolumn = someothercondition)
次のようなもので同様の効果を達成できます。
WHERE $dynamic_value <> '<=' OR <your-other-clause>
そうすれば、がに設定されて<your-other-clause>いない限り、ビットは効果がありません。$dynamic_value'<='