Эквивалент concat_ws в Postgres 9.1 в красном смещении Amazon - PullRequest
0 голосов
/ 21 июня 2019

У меня есть запрос, изначально написанный для pg9.1, который я пытаюсь исправить для использования в красном смещении следующим образом

select concat_ws(' | ', p.gb_id, p.aro_id, p.gb_name) c from (
select ca.p_id,
    avg(ca.ab) as ab
    from public.fca
        join temp_s_ids s on ca.s_id = s.s_id
    group by ca.p_id
) as x
    join public.dim_protein as p on x.protein_id = p.protein_id;";

Я пытался протестировать его самостоятельно, но так как он создается из временных таблиц, созданных сессией php, мне пока не повезло. Однако я предполагаю, что функция concat_ws не работает должным образом в красном смещении.

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Для обработки NULL с вы можете сделать:

select trim('|' from
            coalesce('|' || p.gb_id) ||
            coalesce('|' || p.p.aro_id) ||
            coalesce('|' || p.gb_name)
           )
from . . .
0 голосов
/ 21 июня 2019

Я не верю, что в красном смещении есть эквивалент. Вы должны будете катиться самостоятельно. Если NULL отсутствует, вы можете просто использовать оператор конкатенации ||:

 SELECT p.gb_id || ' | ' || p.aro_id || ' | ' || p.gb_name c
 FROM...

Если вам нужно беспокоиться о нулях (и их разделителя):

 SELECT CASE WHEN p.gb_id IS NOT NULL THEN p.gb_id || ' | ' END || CASE WHEN p.aro_id IS NOT NULL THEN p.aro_id || ' | ' END || COALESCE(p.gb_name, '') c
 FROM

Возможно, это можно упростить, но я верю, что это поможет.

...