2016-05-13 22 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清楚。儘管他的回答似乎表現出稍微深刻的想法,但你的回答對我的目的來說也足夠了。感謝您的及時答覆! –