1

私がやりたいのは、特定の値(動的にロードされる)=特定の値の場合にのみwhere句を実行することです。例えば

IF ('<=' == '$dynamic_value') THEN WHERE...

これは可能ですか?($ dynamic値は<=、または> =のいずれかになります)

つまり、where句は、特定の値が発生したとき、または呼び出されたときにのみ使用したいと思います。

4

3 に答える 3

2

次のような句で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のどちらであるかを確認していることを確認してください。>=<=

于 2012-07-31T02:40:42.777 に答える
1

条件ではなくIF、これは通常、のブール論理で処理されWHEREます。動的な値を、ANDそれに対応する条件と一緒に一致させます。

WHERE
  ('$dynamic_value' = '<=' AND othercolumn = othercondition)
  OR ('$dynamic_value' = '>=' AND othercolumn = someothercondition)
于 2012-07-31T02:40:32.647 に答える
0

次のようなもので同様の効果を達成できます。

WHERE $dynamic_value <> '<=' OR <your-other-clause>

そうすれば、がに設定されて<your-other-clause>いない限り、ビットは効果がありません。$dynamic_value'<='

于 2012-07-31T02:40:19.043 に答える