我有以下sql查询:
SELECT nickname, name from users;
有些用户有姓名但没有昵称,有些用户有昵称但没有姓名。我想有sql查询,检查用户是否有现在的名字或昵称,只返回当前的名称。以下是结果的样子:
Name
-------------
user_1_nickname
user_2_name
user_3_nickname
user_4_name
在PostgreSQL中有没有办法做到这一点?
答案 0 :(得分:3)
使用coalesce?
select coalesce(name, nickname) -- this prioritises name over nickname
from users;
答案 1 :(得分:2)
尝试使用coalesce
。这可能就是你所需要的。
Coalesce
返回列表中的第一个非null参数,因此您可以执行以下操作:
coalesce(nickname, name)
然后昵称为null,返回名称。
https://www.postgresql.org/docs/current/static/functions-conditional.html