Дополнительно
Функция разделения в oracle на значения, разделенные запятыми, с автоматической последовательностью
Нужна функция Split, которая будет принимать два параметра, строку для разделения и разделитель, чтобы разделить строку и вернуть таблицу с колонками Id и Data.И как вызвать функцию Split, которая вернет таблицу с колонками Id и Data. Столбец Id будет содержать последовательность, а столбец Data - данные строки. Например.
SELECT*FROM Split('A,B,C,D',',')
Результат должен быть в следующем формате:
|Id | Data
-- ----
|1 | A |
|2 | B |
|3 | C |
|4 | D |
23
3
Вот как можно создать такую таблицу:
Немного подправив (т.е. заменив
,
в[^,]
переменной), можно написать такую функцию, которая будет возвращать таблицу.Существует несколько вариантов. Смотрите Разделение одной строки, разделенной запятыми, на строки в Oracle.
Вам просто нужно добавить LEVEL в список select в качестве столбца, чтобы получить порядковый номер каждой возвращаемой строки. Или, ROWNUM также будет достаточно.
Используя любой из приведенных ниже SQL, вы можете включить их в ФУНКЦИЮ.
INSTR в предложении CONNECT BY:
REGEXP_SUBSTR в предложении CONNECT BY:
REGEXP_COUNT в предложении CONNECT BY:
Использование XMLTABLE
Используя предложение MODEL:
Вы также можете использовать пакет DBMS_UTILITY, предоставляемый Oracle. Он предоставляет различные подпрограммы. Одной из таких полезных утилит является процедура COMMA_TO_TABLE, которая преобразует список имен через запятую в таблицу имен PL/SQL.
Читать DBMS_UTILITY.COMMA_TO_TABLE
Если вам нужна функция, попробуйте следующее.
Сначала мы создадим тип:
Затем создадим функцию: