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