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中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”?