SELECT REGEXP_SUBSTR('STRING_EXAMPLE','[^_]+',1,1) from dual
- правильный ответ, отправленный пользователем1717270
Если вы используете INSTR
, он даст вам позицию для строки, которая предполагает, что в ней содержится «_».Что если это не так?Ну, ответ будет 0. Поэтому, когда вы хотите напечатать строку, она напечатает NULL
.Пример: если вы хотите удалить домен из «host.domain».В некоторых случаях у вас будет только короткое имя, то есть «хост».Скорее всего, вы хотели бы напечатать «хост».Ну, с INSTR
он даст вам NULL
, потому что он не нашел ".", То есть будет печатать от 0 до 0. С REGEXP_SUBSTR
вы получите правильный ответ во всех случаях:
SELECT REGEXP_SUBSTR('HOST.DOMAIN','[^.]+',1,1) from dual;
ХОСТ
и
SELECT REGEXP_SUBSTR('HOST','[^.]+',1,1) from dual;
ХОСТ