条件の別の値と値を比較し、この値がNULL
であるかどうかを示す準備済みの文を書く方法がありますか?私はa1 => null
とa2 => 42
で、このプリペアドステートメントを使用する場合は条件にNULL値を含む準備済みの文を書き込む
SELECT `foo` FROM `bar` WHERE `a1` = :a1 AND `a2` = :a2
、その結果のクエリは次のようになります。
SELECT `foo` FROM `bar` WHERE `a1` = NULL AND `a2` = '42'
これは私が欲しいもの、もちろん、ではありません。私はそのような場合にはこれが必要になります。
a1
とa2
の両方がNULL可能です。私は4の書類を作成定義する必要はありません:
-- I would use this, if both values are not null
SELECT `foo` FROM `bar` WHERE `a1` = :a1 AND `a2` = :a2
-- and this, if the expected value of a1 is null
SELECT `foo` FROM `bar` WHERE `a1` IS NULL AND `a2` = :a2
-- and this, if the expected value of a2 is null
SELECT `foo` FROM `bar` WHERE `a1` = :a1 AND `a2` IS NULL
-- and this, if I would expect both values to be null
SELECT `foo` FROM `bar` WHERE `a1` IS NULL AND `a2` IS NULL
ありがとうございました!その演算子を知りませんでした(そして、自分自身で「OR」を使って解決策を見つけた可能性があります)。 – stofl
@stofl:これは役に立ちました。私が十分に強調していないものを強調するために、** <=> **比較演算子はMySQLで*非標準*拡張子*のみ*です。 (少なくとも、私はこの演算子をサポートする他のどのDBMSも認識していません。) – spencer7593
ありがとうございます。私の場合は関係ありません。なぜなら、とにかくdbmsを独立させているわけではないからです。 – stofl