如何在Postgresql中从数组构建标志集?

时间:2016-05-13 11:45:11

标签: arrays postgresql

有没有办法在Postgresql中从两个数组设置标志? 我想要的是:

array1[] = {'aa', 'bb', 'cc', 'dd'}
array2[] = {'aa', 'cc'}

result[] = {'aa', '--', 'cc', '--'}

如果只是一个十字路口应该很容易,但我也需要明确的“没有公地”。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

我有这个:

SELECT
    array_agg(flag_value)
FROM (
    SELECT
        CASE WHEN array_value = ANY (ARRAY['aa', 'cc']) THEN
            array_value
        ELSE
            '--'
        END AS flag_value
    FROM
        unnest(ARRAY['aa', 'bb', 'cc', 'dd']) AS array_value
) AS X;

答案 1 :(得分:1)

select array_agg(case 
                when a1.id is null or a2.id is null then '--'
                else a1.id
             end)  
from unnest(array['aa', 'bb', 'cc', 'dd']) as a1(id)
  left join unnest(array['aa', 'cc']) as a2(id) on a1.id = a2.id