MySQL Select 非空列

MySQL Select Column if Not Null only

我有这个 mysql 代码:

SELECT firstname, lastname, age, gender from persons WHERE id = 1;

显示:

> firstname: Marlon 
> 
> lastname: Null
> 
> age: 26
> 
> gender: male

我想做的是:

SELECT IF NULL DONT SELECT(firstname), IF NULL DONT SELECT(lastname), IF NULL DONT SELECT(age), IF NULL DONT SELECT(gender) from persons WHERE id = 1;

显示:

> firstname: Marlon 
> 
> age: 26
> 
> gender: male

姓氏没有显示,因为它为空

当然你不能那样做;相反,您可以使用 COALESCE()IFNULL() 函数在 NULL like

的情况下提供默认值
SELECT firstname, 
COALESCE(lastname,'N/A'),
age,
gender from persons WHERE id = 1;

(或)如果您想完全删除该记录,请使用 WHERE 条件,例如

SELECT firstname, lastname, age, gender from persons 
WHERE id = 1 AND lastname IS NOT NULL;

即使无法隐藏列,但是您可以避免输出中出现空值。所以可以有以下两种方式-

方法一:你可以在字段为空的地方留空。

SELECT IFNULL(firstname,'') AS firstname, 
IFNULL(lastname,'') AS lastname, 
IFNULL(age,'') AS age, 
IFNULL(gender,'') AS gender 
FROM persons WHERE id = 1;

方法 2:您可以使用连接函数获取单个列中的所有值。

SELECT CONCAT
(
IFNULL(firstname,''),' ',
 IFNULL(lastname,''),' ', 
IFNULL(age,''),' ', 
IFNULL(gender,'')
) 
FROM persons WHERE id = 1;