有没有办法在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;