Как разделить строку запятой на новые столбцы?

Я много исследовал и не нашел именно то, что я пытаюсь сделать. Я пытаюсь разделить строку на новые столбцы. Большинство статей, которые я нашел, делятся на новые строки, это не моя цель. Я извлекаю данные из базы данных Redshift.

Вот пример строки в столбце 1 в ТЕКУЩЕМ СОСТОЯНИИ:

Column 1='a,b,c,1,2,3'

Вот ЖЕЛАЕМАЯ структура:

Column 2='a'
Column 3='b'
Column 4='c'
Column 5='1'
...

Как этого добиться?

Какую СУБД вы используете? Пожалуйста, установите соответствующий тег.

sticky bit 30.05.2019 20:35

формат и длина строки остаются одинаковыми для всех строк?

Rhythm 30.05.2019 20:39

"sql" здесь бессмысленно. Нам нужно знать, какую СУБД вы используете (SQL Server, Postgres, Oracle, Mysql и т. д.). У каждого есть свой метод взрыва/разделения строки.

JNevill 30.05.2019 20:55

@JNevil извините, данные запрашиваются из Amazon Redshift через SQL. И да, формат строки одинаков для всех столбцов. Хотя длина может отличаться.

LaLaTi 30.05.2019 21:05

Итак, если у вас есть две возвращенные записи, и одна имеет строку с 8 значениями, разделенными запятыми, а другая имеет 12 значений, разделенных запятыми, сколько столбцов будет возвращено в этом наборе результатов? 8, 12, что-то еще? Это не то, для чего SQL хорош, поскольку вам нужно знать свои столбцы в предложении SELECT.

JNevill 30.05.2019 21:14

@JNevil, поэтому количество столбцов будет фиксированным. Это хорошие новости.

LaLaTi 30.05.2019 21:19
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
6
95
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если количество выводимых столбцов фиксировано, вы можете использовать функцию Redshift String_Part.

SELECT col1, 
    STRING_PART(col1, ',', 1) as Col2, 
    STRING_PART(col1, ',', 2) as Col3,
    STRING_PART(col1, ',', 3) as Col4
FROM yourtable

Это разделило бы col1 из yourtable на 3 столбца, содержащих 1-й, 2-й и 3-й элементы из списка, разделенные запятой.

Другие вопросы по теме