Хочу функцию в Oracle для удаления дубликатов из строки
Есть строки с IP адресами, например Слева то есть сейчас, справа то хочу получить на выходе
192.168.0.2 >> 192.168.0.2
192.168.0.120;192.168.0.120 >> 192.168.0.120
192.168.0.160;192.168.0.160;192.168.0.160 >> 192.168.0.160
192.168.0.15;142.15.23.10;192.168.0.15 >> 192.168.0.15;142.15.23.10
и т.д.
Написал начало функции и понятия не имею как загнать части строки в массив и удалить дубликаты. На PHP я уже давно бы это сделал, а в Oracle темный лес
CREATE OR REPLACE FUNCTION distinct_string(
string$ in VARCHAR2,
separator$ in VARCHAR2
)
RETURN VARCHAR2 IS
BEGIN
IF string$ IS NULL
THEN RETURN string$;
END IF;
IF INSTR(string$, separator$) = 0
THEN RETURN string$;
END IF;
FOR i IN 1 .. regexp_count(string$, separator$) LOOP
dbms_output.put_line(i);
END LOOP;
RETURN 'String without dublicates';
END;
Источник: Stack Overflow на русском