у меня есть 2 колонки со списком городов, и я хочу разделить городов в рядыPostgresql разделить столбец в строки
user 1 | [town1,town2,town3]
Я хочу разделить это на строки:
user 1 | town 1
user 1 | town 2
user 1 | town 3
у меня есть 2 колонки со списком городов, и я хочу разделить городов в рядыPostgresql разделить столбец в строки
user 1 | [town1,town2,town3]
Я хочу разделить это на строки:
user 1 | town 1
user 1 | town 2
user 1 | town 3
Если предположить, что столбцы названы user_name
и towns
вы можете сделать что-то вроде этого:
select t1.user_name, t2.town
from the_table t1
cross join lateral unnest(string_to_array(t1.towns,',')) as t2 (town)
Опираясь на ответ a_horse_with_no_name, то почему не иметь что-то более простое, как:
--Get some sample data
WITH test(username, town) as
(
select 'user 1', array['town1', 'town2', 'town3']
UNION
select 'user 2', array['town3', 'town2', 'town5']
)
--The following gives the results you are after.
SELECT username, unnest(town)
FROM test
Я полностью согласен с использованием unnest функции, но я не понимаю причину для перекрестного соединения.
ОП, очень важно, какой тип данных хранится в вашем «списке». Здесь я предполагаю, что он хранится как ARRAY. Если он хранится в виде строки, тогда ответ Рахула сделает трюк.