代码之家  ›  专栏  ›  技术社区  ›  Alec Smart

mysql返回非空字段

  •  2
  • Alec Smart  · 技术社区  · 15 年前

    我有两个字段,但我只想返回非空字段。

    select firstname, lastname, (if firstname != empty, then firstname else lastname) as name from users;
    

    我该怎么做上面这样的事情呢?我不知道圆括号内应该有什么。我不想使用PHP后处理。

    2 回复  |  直到 15 年前
        1
  •  3
  •   nickf    15 年前

    这两者都适用 null 值以及空字符串( '' )

    SELECT IF(LENGTH(firstname), firstname, lastname) as name from users;
    
        2
  •  6
  •   Asaph    15 年前

    在MySQL中有几种方法可以做到这一点。

    你可以使用 coalesce() 函数的参数中返回第一个非空值。

    select coalesce(firstname, lastname) as name from users;
    

    或者,您可以使用 case statement :

    select case when firstname is not null then firstname else lastname end as name from users;
    

    或者你可以用 if() 功能:

    select if(firstname is not null, firstname, lastname) as name from users;
    

    或者你可以用 ifnull() 功能:

    select ifnull(firstname, lastname) as name from users;