Символы в квадратных скобках интерпретируются как буквенные символы , а не как экранирующие символы - поэтому вы соответствуете чему угодно, кроме 't'
или '\'
, а не табуляциям.
Вы можете вставить фактический символ табуляции, используя конкатенацию:
SELECT
REGEXP_SUBSTR ('test1 test2 test3', '[^'||chr(9)||']+', 1, 1) field1,
REGEXP_SUBSTR ('test1 test2 test3', '[^'||chr(9)||']+', 1, 2) field2,
REGEXP_SUBSTR ('test1 test2 test3', '[^'||chr(9)||']+', 1, 3) field3
FROM DUAL;
FIELD FIELD FIELD
----- ----- -----
test1 test2 test3
У вас могут быть проблемы с соседними вкладками:
SELECT
REGEXP_SUBSTR ('test1 test3', '[^'||chr(9)||']+', 1, 1) field1,
REGEXP_SUBSTR ('test1 test3', '[^'||chr(9)||']+', 1, 2) field2,
REGEXP_SUBSTR ('test1 test3', '[^'||chr(9)||']+', 1, 3) field3
FROM DUAL;
FIELD FIELD FIELD3
----- ----- ------
test1 test3
A более безопасный шаблон :
SELECT
REGEXP_SUBSTR ('test1 test3', '(.*?)('||chr(9)||'|$)', 1, 1, null, 1) field1,
REGEXP_SUBSTR ('test1 test3', '(.*?)('||chr(9)||'|$)', 1, 2, null, 1) field2,
REGEXP_SUBSTR ('test1 test3', '(.*?)('||chr(9)||'|$)', 1, 3, null, 1) field3
FROM DUAL;
FIELD FIELD2 FIELD
----- ------ -----
test1 test3
дб <> скрипка