Я много исследовал и не нашел именно то, что я пытаюсь сделать. Я пытаюсь разделить строку на новые столбцы. Большинство статей, которые я нашел, делятся на новые строки, это не моя цель. Я извлекаю данные из базы данных Redshift.
Вот пример строки в столбце 1 в ТЕКУЩЕМ СОСТОЯНИИ:
Column 1='a,b,c,1,2,3'
Вот ЖЕЛАЕМАЯ структура:
Column 2='a'
Column 3='b'
Column 4='c'
Column 5='1'
...
Как этого добиться?
формат и длина строки остаются одинаковыми для всех строк?
"sql" здесь бессмысленно. Нам нужно знать, какую СУБД вы используете (SQL Server, Postgres, Oracle, Mysql и т. д.). У каждого есть свой метод взрыва/разделения строки.
@JNevil извините, данные запрашиваются из Amazon Redshift через SQL. И да, формат строки одинаков для всех столбцов. Хотя длина может отличаться.
Итак, если у вас есть две возвращенные записи, и одна имеет строку с 8 значениями, разделенными запятыми, а другая имеет 12 значений, разделенных запятыми, сколько столбцов будет возвращено в этом наборе результатов? 8, 12, что-то еще? Это не то, для чего SQL хорош, поскольку вам нужно знать свои столбцы в предложении SELECT
.
@JNevil, поэтому количество столбцов будет фиксированным. Это хорошие новости.
Если количество выводимых столбцов фиксировано, вы можете использовать функцию 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-й элементы из списка, разделенные запятой.
Какую СУБД вы используете? Пожалуйста, установите соответствующий тег.