Я пишу запрос в Oracle.
Я хочу получить строку справа, но строку длина является динамической.
Пример:
299123456789
Я хочу получить 123456789
substr(PHONE_NUMBERS,-X,Y)
X отличается для каждой записи.
Я попробовал это:
substr(PHONE_NUMBERS,-length(PHONE_NUMBERS),Y)
, и это не сработало ..
Как мне написать этот запрос?
SQL> select substr('123456',-1,6) from dual;
S
-
6
SQL> select substr('123456',-6,6) from dual;
SUBSTR
------
123456
SQL> select substr('123456',-7,6) from dual;
S
-
Если просмотреть приведенные выше утверждения, 3 запрос дает нулевое значение, так как -7 > length('123456').
Поэтому проверьте длину CONT_PHONE_NUMBERS
и PHONE_NUMBERS
Надеюсь, это вам поможет
SQL> select substr('999123456789', greatest (-9, -length('999123456789')), 9) as value from dual;
VALUE
---------
123456789
SQL> select substr('12345', greatest (-9, -length('12345')), 9) as value from dual;
VALUE
----
12345
Вызов greatest (-9, -length(string))
ограничивает начальное смещение либо 9 символами влево от конца или начала строки.