PostgreSQL 9.3: ЗАМЕНИТЬ строку

У меня есть строка для замены на ожидаемую форму.

Входные данные: у меня есть следующая строка.

'A,B,C,D,E,F,G,H,I,J,K,L'

И я хочу заменить вышеуказанную строку в следующий формат:

'x.A = z.A ,
 x.B = z.B , 
 x.C = z.C , 
 x.D = z.D , 
 x.E = z.E , 
 x.F = z.F ,
 .........
 .........
 x.L = z.L'

Моя попытка:

SELECT 'x.'||REPLACE('A,B,C,D,E,F,G,H,I,J,K,L',',',' = z.')

2 ответа

Решение
SELECT 'x.' || col || '=z.' || col
FROM (
      SELECT unnest(regexp_split_to_array('A,B,C,D,E,F,G,H,I,J,K,L', ',')) col
     ) t

Ты можешь использовать string_agg а также FORMAT:

SELECT string_agg(FORMAT('x.%s = z.%s', t,t) , ',')
FROM (SELECT unnest(regexp_split_to_array('A,B,C,D,E,F,G,H,I,J,K,L', ',')) AS t
     ) AS sub;

Вы можете использовать в качестве разделителя E',\r\n' получить возврат каретки:

SELECT string_agg(FORMAT('x.%s = z.%s', t,t) , E',\r\n')
FROM (SELECT unnest(regexp_split_to_array('A,B,C,D,E,F,G,H,I,J,K,L', ',')) AS t)
      AS sub

Выход:

x.A = z.A,
x.B = z.B,
x.C = z.C,
x.D = z.D,
x.E = z.E,
x.F = z.F,
x.G = z.G,
x.H = z.H,
x.I = z.I,
x.J = z.J,
x.K = z.K,
x.L = z.L 
Другие вопросы по тегам