2016-05-13 50 views
0

有没有办法在Postgresql中设置两个数组的标志? 我想是这样的:我如何从Postgresql中的数组构建标志集?

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

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

它应该很容易,如果只是一个路口,但我需要明确的“不公共”了。

预先感谢您!

回答

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 
+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; 
+0

你的做法是为a_horse_with_no_name清楚。尽管他的回答似乎表现出稍微深刻的想法,但你的回答对我的目的来说也足够了。感谢您的及时答复! –