4
有沒有辦法編寫一個準備好的語句,其中的值與條件中的另一個值進行比較,我不知道這個值是否爲NULL
。在條件中編寫一個可以爲空的值的準備語句
SELECT `foo` FROM `bar` WHERE `a1` = :a1 AND `a2` = :a2
如果我會使用與a1 => null
和a2 => 42
這個準備好的語句,然後將得到的查詢是:
SELECT `foo` FROM `bar` WHERE `a1` = NULL AND `a2` = '42'
這當然不是我想要的。我需要這種在這種情況下:
兩個a1
和a2
可爲空。我不想定義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