Предположим, у меня есть одна запись в Table test_tabfile, где поле default_sort содержит значения, разделенные запятыми:
table_name schema_name default_sort
------------ ------------- --------------------------------------
Population 2017 GEOTYPE, STATE, COUNTY, ZIP, MSA, CSA
Следующий устаревший скрипт SQL разделяет значения в поле default_sort и создает новые записи с полем отдельных значений, index_column. Как это достигается?
Я пытаюсь понять это и переписать более интуитивно. Спасибо.
SELECT schema_name AS schemaname,
table_name AS tablename,
REGEXP_SUBSTR (default_sort, '[^,]+', 1, rn) AS index_column
FROM test_tabfile
CROSS JOIN
( SELECT ROWNUM rn
FROM (SELECT MAX (LENGTH (REGEXP_REPLACE (default_sort, '[^,]+'))) + 1 mx
FROM test_tabfile)
CONNECT BY LEVEL <= mx);
Вот пример выходных данных:
Schmemaname tablename index_column
----------- ----------- ------------
2017 Population GEOTYPE
2017 Population STATE
2017 Population COUNTY
2017 Population ZIP
2017 Population MSA
2017 Population CSA
CONNECT BY LEVEL
это Oracle. Я добавлю тег Oracle - person Nick.McDermaid   schedule 02.05.2018SELECT ROWNUM rn FROM (SELECT MAX (LENGTH (REGEXP_REPLACE (default_sort, '[^,]+'))) + 1 mx FROM test_tabfile) CONNECT BY LEVEL <= mx
- person Nick.McDermaid   schedule 02.05.2018