56

我有一个选择语句,我想让选择像这样有条件:

IFNULL(field_a, field_a, field_b)

以便它检查字段 a。如果 a 为空,则选择字段 b。

那可能吗 ?

4

4 回答 4

101

使用COALESCE

SELECT COALESCE(field_a, field_b)

COALESCE 是一个 ANSI 标准函数,它返回指定列列表中的第一个非空值,从左到右处理列。因此在示例中,如果field_a为 null,field_b则将显示值。但是,如果指定的列中没有非空值,此函数将返回 NULL。

它支持 MySQL(我在 4.1 上使用过)、SQL Server(自 v2000 起)、Oracle 9i+...

于 2010-07-09T18:23:30.737 回答
74

还有另一种给猫剥皮的方法(不仅可以灵活用于空比较)...

select if(field_a is not null, field_a, field_b) from...
于 2014-04-30T18:26:06.513 回答
44

是的,但这只是两个参数:

IFNULL(field_a,field_b)

如果field_a不为空,则返回。否则field_b将被退回。

参考:IFNULL

于 2010-07-09T18:24:07.370 回答
0

更多示例

MySQL IFNULL() 与语法和示例

句法

IFNULL 函数的语法是:

IFNULL(expression_1,expression_2);

例子

   SELECT 
     name, IFNULL(businessphone, homephone) phone
 FROM
     users;



       #The above query return this result from users table

   +------------+-----------+----------+-----------
   | id        | name           | phone          |
   +------------+-----------+----------+-----------
   | 5         | Tommy Hill     | (541) 754-3009 |
   | 6         | John Smith     | (541) 754-3110 | 
   | 10        | Mark Greenspan | (541) 754-3111 | 
   | 11        | Kelvin Row     | (541) 754-3111 |
   +------------+-----------+----------+-----------
于 2019-06-24T05:08:21.317 回答