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



有没有办法在Postgresql中从两个数组中创建一个标志集?我想要的是:

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

如果只是一个交集,这应该很容易,但我也需要明确的"无公共空间"。

提前谢谢!

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

我有这个:

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;

最新更新