ВЫБРАТЬ regexp_replace ('ABC-DEF', '[-] ', NULL) ОТ двойного;
ВЫБЕРИТЕ regexp_replace ('ABC-DEF-GHI-JKL', '[-] ', NULL) ОТ двойного;
ИЛИ Используйте мою классную функцию FIELD:
CREATE OR REPLACE FUNCTION field(i_string VARCHAR2
,i_delimiter VARCHAR2
,i_occurance NUMBER
,i_return_number NUMBER DEFAULT 0
,i_replace_delimiter VARCHAR2 DEFAULT NULL) RETURN VARCHAR2 IS
v_return_string VARCHAR2(32767);
n_start NUMBER := i_occurance;
v_delimiter VARCHAR2(1);
n_return_number NUMBER := i_return_number;
n_max_delimiters NUMBER := regexp_count(i_string, i_delimiter);
BEGIN
IF i_return_number > n_max_delimiters THEN
n_return_number := n_max_delimiters + 1;
END IF;
FOR a IN 1 .. n_return_number LOOP
v_return_string := v_return_string || v_delimiter || regexp_substr(i_string, '[^' || i_delimiter || ']+', 1, n_start);
n_start := n_start + 1;
v_delimiter := nvl(i_replace_delimiter, i_delimiter);
END LOOP;
RETURN(v_return_string);
END field;
Использование:
Поле SELECT ('Hello-Dolly', '-', 1, 2)
, поле ('Hello-Dolly', '-', 1, 1) First_part
, поле ('Hello-Dolly', '-', 2, 1) Second_part
ОТ двойного;