У меня возникла проблема с запросом оракула.oracle - Разделить несколько разделенных запятыми значений в таблице оракула на несколько строк
Разделение разделенных запятыми данных на несколько строк с использованием соединения и регулярного выражения в запросе оракула. Я получаю больше дубликатов строк. например, на самом деле моя таблица имеет 150 строк в том, что две строки имеют разделенные запятой строки, поэтому в целом мне нужно получить только 155 строк, но я получаю 2000 строк. Если я использую отличную работу, но я не хочу дублировать строки в результате запроса.
Я попытался следующий запрос, однако, что генерирует повторяющиеся строки в результате запроса:
WITH CTE AS (SELECT 'a,b,c,d,e' temp,1 slno FROM DUAL
UNION
SELECT 'f,g',2 from dual
UNION
SELECT 'h',3 FROM DUAL)
SELECT TRIM(REGEXP_SUBSTR(TEMP, '[^,]+', 1, LEVEL)) ,SLNO FROM CTE
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(temp, '[^,]+')) + 1
EDIT
Приведенный выше запрос на выборку только в состоянии разделить запятая строки с разделителями, однако , он создает повторяющиеся строки при выполнении в таблице с несколькими строками. Как ограничить дублирующиеся строки?
Этот вопрос не является дубликатом другой вопрос помечено как дубликат , Другой вопрос - разделение одной строки, и этот вопрос касается нескольких строк. –
В принятом ответе используется условие 'DBMS_RANDOM.VALUE IS NOT NULL', которое неуместно. Он просто предотвращает циклическую петлю, однако прямой вопрос будет возникать как ** Как и когда dbms_random.VALUE может быть нулевым? ** Логически, он никогда не будет NULL. Более подходящим решением является использование 'sys.odciNumberList' и предотвращение циклического цикла. См. Мой ответ ниже. –