MySQL Select Column if Not Null only

Posted

技术标签:

【中文标题】MySQL Select Column if Not Null only【英文标题】: 【发布时间】:2015-11-04 21:34:58 【问题描述】:

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

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

【问题讨论】:

您为什么要这样做?无论如何,这不是执行此查询时显示的内容(除非使用 \G 分隔符!?!) 【参考方案1】:

当然你不能那样做;相反,您可以使用COALESCE()IFNULL() 函数来提供默认值,以防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;

【讨论】:

【参考方案2】:

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

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

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;

【讨论】:

我认为 method1 会显示该列,即使它为空,对吧? 我的问题是“MySQL Select Column if Not Null only”,如果该列为 null,则不应显示。看看我的第二个显示器,应该是这样的。 @MarlonBuendia:我已经在回答的顶部提到,似乎无法通过 sql 查询隐藏任何列,但如果适合您,您可以检查替代解决方案....但是如果您只是想隐藏它们,那么你必须使用任何小程序......

以上是关于MySQL Select Column if Not Null only的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 修改int类型为bigint SQL语句拼接

mysql中index与Multiple-Column Indexes区别与联系

mysql查询语句提示Unknown column 'zp' in 'where clause',求解!

oracle分页查询,一个select语句解决,不需要子查询。

mysql查询:SELECT DISTINCT column1,GROUP BY column2

如何在 MariaDB/MySQL 工作台中获取 SELECT 语句的输出,以“table.column”格式命名列,而不仅仅是“column”?