Как объединить 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, ',')
→ Ссылка