操作数值为NULL时如何切换到IS运算符?

时间:2014-01-16 07:08:14

标签: php mysql pdo prepared-statement

我有一个INT的mysql列,它可以包含0,它还可以NULL

目前我正在使用它:

SELECT
    ...
FROM
    `mytable`
WHERE
    IF(:mydata IS NULL, `mycolumn` IS NULL, `mycolumn` = :mydata)

但我想知道是否有更简洁更简洁的方法来获得相同的结果

提前谢谢

2 个答案:

答案 0 :(得分:2)

使用<=>比较运算符进行NULL安全比较:

SELECT
    ...
FROM
    `mytable`
WHERE
    `mycolumn` <=> :mydata

答案 1 :(得分:1)

可能不会更短但更易读的方法是使用OR,如下所示:

SELECT
    ...
FROM
    `mytable`
WHERE
    mycolumn IS NULL OR mycolumn = :mydata

除了与NULL完全匹配的行外,它还会返回mycolumnmydata值的行。