mySQL返回非空字段

Ale*_*art 2 mysql

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

select firstname, lastname, (if firstname != empty, then firstname else lastname) as name from users;
Run Code Online (Sandbox Code Playgroud)

我该怎么做上面这样的事情.我不确定圆括号内应该是什么.我不想使用PHP后处理.

Asa*_*aph 6

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

您可以使用coalesce()函数,该函数在其参数中返回第一个非null值.

select coalesce(firstname, lastname) as name from users;
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用case语句:

select case when firstname is not null then firstname else lastname end as name from users;
Run Code Online (Sandbox Code Playgroud)

或者您可以使用if()函数:

select if(firstname is not null, firstname, lastname) as name from users;
Run Code Online (Sandbox Code Playgroud)

或者您可以使用ifnull()函数:

select ifnull(firstname, lastname) as name from users;
Run Code Online (Sandbox Code Playgroud)