7

我有这个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

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

4

2 回答 2

3

当然你不能那样做;相反,您可以使用COALESCE()orIFNULL()函数来提供默认值,以防出现NULL类似情况

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;
于 2015-08-12T10:32:38.457 回答
1

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

方法1:您可以将字段为空的地方留空。

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;
于 2015-08-12T10:36:50.823 回答