【问题标题】:MySQL IFNULL ELSEMySQL IFNULL ELSE
【发布时间】:2011-03-14 00:40:23
【问题描述】:

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

IFNULL(field_a, field_a, field_b)

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

这可能吗?

【问题讨论】:

  • 也许 U 混合了 IFNULL 和 NULLIF。 U need IFNULL: "如果 expr1 不为 NULL,IFNULL() 返回 expr1;否则返回 expr2。"

标签: mysql select ifnull


【解决方案1】:

使用COALESCE:

SELECT COALESCE(field_a, field_b)

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

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

【讨论】:

  • 我也支持使用COALESCE。
  • 对函数如何工作的如此清晰的解释......谢谢!更新了损坏的链接。
  • 对我不熟悉的功能的非常酷的解释!但是,对于 OP 的问题,using IF() is much more readable.
【解决方案2】:

还有另一种给猫剥皮的方法(灵活,不只是空比较)...

select if(field_a is not null, field_a, field_b) from...

【讨论】:

  • 最佳答案。允许做Select if(name is not null, CONCAT('name is : ',name),'');
  • select IFNULL(column, 'default') 也可以。见这里:sqlfiddle.com/#!9/14b752/1/0
【解决方案3】:

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

IFNULL(field_a,field_b)

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

参考:IFNULL

【讨论】:

    【解决方案4】:

    For more examples

    MySQL IFNULL() 的语法和示例

    语法

    IFNULL函数的语法是:

    IFNULL(expression_1,expression_2);
    

    examples

       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 |
       +------------+-----------+----------+-----------
    

    【讨论】:

      猜你喜欢
      • 2011-01-09
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      • 2011-06-12
      • 2013-03-02
      相关资源
      最近更新 更多