Как объединить 8 столбцов в 1 через символ в PostgreSQL?
Необходимо объединить 8 столбцов с разным текстом, в 1 столбец через ;
Пример:

В результате должно получиться: ученик;ученик студент;учитель репетитор ученик;студент Т.е. игнорируя пустые значения
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Сделайте так
Select
concat(coalesce(a||';', ''),coalesce(b||';', ''),..)
...
From table
Автор решения: Stefanov.sm
→ Ссылка
select
trim(regexp_replace(format('%s,%s,%s,%s,%s,%s,%s,%s',a,b,c,d,e,f,g,h),'(,+)',',','g'), ',')
from t;
Пояснения:
Сначала создадим комбинированную строку, заполняя шаблон:
format('%s,%s,%s,%s,%s,%s,%s,%s',a,b,c,d,e,f,g,h)
Затем заменим любую последовательность запятых одной запятой:
regexp_replace(_str, '(,+)', ',', 'g')`
И в финале удалим запятые из начала и конца строки:
trim(_str, ',')