如果在数组中找不到值,则返回NULL

时间:2019-07-15 18:52:50

标签: postgresql

我想检查数组中是否存在值,如果不存在,我想为其返回NULL行,而不是没有行。

SELECT 
    users.id 
FROM 
    users 
WHERE 
    users.name = ANY('{ John, avocado, Carl }'::text[]);

当前返回

id
1
2

我希望它退回

id
1
NULL
2

由于avocado表中没有users

1 个答案:

答案 0 :(得分:1)

SELECT users.id
FROM unnest('{John, avocado, Carl}'::text[]) WITH ORDINALITY AS a(name, num)
   LEFT JOIN users USING (name)
ORDER BY a.num;

 id 
----
  2

  1
(3 rows)