【问题标题】:MySQL Select Column if Not Null onlyMySQL 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 分隔符!?!)

标签: mysql advanced-search


【解决方案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 查询隐藏任何列,但如果适合您,您可以检查替代解决方案....但是如果您只是想隐藏它们,那么你必须使用任何小程序......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    相关资源
    最近更新 更多