如何将 CONCAT_WS 与 COALESCE 一起使用?
How to use CONCAT_WS with COALESCE?
我有一个 table users
,它有字段 firstName
和 lastName
。两者都可以为NULL。
我想 select 全名,其中之一,或者如果两者都没有设置则默认为字符串。我尝试了以下查询,但如果它们都是 NULL,则值不会设置为 Unnamed
,而是生成一个空字符串。
SELECT COALESCE(CONCAT_WS(' ', firstName, lastName), 'Unnamed') AS fullName FROM users;
我不能用CONCAT
,因为如果只填其中一个名字,我希望单个名字returned,而CONCAT
会return 如果未设置其中一个值,则为 NULL。
如何仅在两列都为 NULL 时设置默认值?
对了,如果两个字符串都为NULL,那么return的值就是分隔符,你设置为' '
。因此,如果 CONCAT_WS()
的结果是 ' '
.
,您可以将其转换为 NULL
SELECT COALESCE(
NULLIF(CONCAT_WS(' ', firstName, lastName), ' '),
'Unnamed'
) AS fullName
FROM users;
COCNAT_WS()
returns 空 字符串,如果除分隔符之外的所有参数都是 NULL
.
所以,做你想做的一种方法是:
SELECT COALESCE(NULLIF(CONCAT_WS(' ', firstName, lastName), ''), 'Unnamed') AS fullName
FROM users;
但是,如果没有 CONCAT_WS()
,这可能会更简单:
select coalesce(concat(firstName, ' ', lastName),
firstName,
lastname,
'Unnamed'
) as fullName
我有一个 table users
,它有字段 firstName
和 lastName
。两者都可以为NULL。
我想 select 全名,其中之一,或者如果两者都没有设置则默认为字符串。我尝试了以下查询,但如果它们都是 NULL,则值不会设置为 Unnamed
,而是生成一个空字符串。
SELECT COALESCE(CONCAT_WS(' ', firstName, lastName), 'Unnamed') AS fullName FROM users;
我不能用CONCAT
,因为如果只填其中一个名字,我希望单个名字returned,而CONCAT
会return 如果未设置其中一个值,则为 NULL。
如何仅在两列都为 NULL 时设置默认值?
对了,如果两个字符串都为NULL,那么return的值就是分隔符,你设置为' '
。因此,如果 CONCAT_WS()
的结果是 ' '
.
SELECT COALESCE(
NULLIF(CONCAT_WS(' ', firstName, lastName), ' '),
'Unnamed'
) AS fullName
FROM users;
COCNAT_WS()
returns 空 字符串,如果除分隔符之外的所有参数都是 NULL
.
所以,做你想做的一种方法是:
SELECT COALESCE(NULLIF(CONCAT_WS(' ', firstName, lastName), ''), 'Unnamed') AS fullName
FROM users;
但是,如果没有 CONCAT_WS()
,这可能会更简单:
select coalesce(concat(firstName, ' ', lastName),
firstName,
lastname,
'Unnamed'
) as fullName