MySQL如果不是Null则选择Column

时间:2015-08-12 10:22:09

标签: mysql advanced-search

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

lastname未显示,因为它为null

2 个答案:

答案 0 :(得分:2)

当然你不能这样做;相反,您可以使用COALESCE()IFNULL()函数在NULL喜欢的情况下提供默认值

SELECT firstname, 
COALESCE(lastname,'N/A'),
age,
gender from persons WHERE id = 1;

(OR)如果要完全删除该记录,请使用{/ 1}}条件,如

WHERE

答案 1 :(得分: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;