mysql 如果不为空、0 或“”

问题描述 投票:0回答:4
SELECT * 
  FROM table WHERE id IN ('21') 
   AND (content_id IS NULL OR content_id = 0 OR content_id = '')

这个条件有没有更简短的写法?

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

mysql isnull
4个回答
9
投票

您可以在MySQL中使用

IFNULL
函数。

select ____
  from tbl
 where IFNULL(content_id, 0) = 0

4
投票

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

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

content_id IN ('0', '')
可以采用以下值:

  • True 如果
    content_id
    '0'
    ''
  • 如果
    content_id IS Null
  • 错误否则。

如果是

Null
,这里COALESCE会返回
1
,相当于
True


2
投票

你可以试试

COALESCE
:

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

0
投票

这对你有用吗?

SELECT *
FROM table
WHERE id IN ('21')
AND content_id IN (NULL, 0, '');
© www.soinside.com 2019 - 2024. All rights reserved.