9
SELECT * 
  FROM table WHERE id IN ('21') 
   AND (content_id IS NULL OR content_id = 0 OR content_id = '')

有没有更短的方法来写这个条件。

我有一个 int() 列,它可以是:NULL、0 或 EMPTY。

4

3 回答 3

9

您可以IFNULL在 MySQL 中使用函数。

select ____
  from tbl
 where IFNULL(content_id, 0) = 0
于 2013-02-05T17:21:59.000 回答
4

我认为更短的方法是这样的:

SELECT * 
FROM table
WHERE id IN ('21')
      AND COALESCE(content_id IN ('0', ''), 1)

content_id IN ('0', '')可以假设这些值:

  • 如果conent_id'0'或者''
  • 如果conent_id IS Null
  • 否则为假。

如果它为 Null,则使用 COALESCE 我将返回 1,这相当于 True。

于 2013-02-05T18:14:07.170 回答
2

你可以试试COALESCE

SELECT * FROM table WHERE id IN ('21') 
AND COALESCE(content_id,0) =0;
于 2013-02-05T17:23:44.433 回答