получить строку справа

Я пишу запрос в Oracle.

Я хочу получить строку справа, но строку длина является динамической.

Пример:

299123456789

Я хочу получить 123456789

substr(PHONE_NUMBERS,-X,Y)

X отличается для каждой записи.

Я попробовал это:

substr(PHONE_NUMBERS,-length(PHONE_NUMBERS),Y)

, и это не сработало ..

Как мне написать этот запрос?

21
задан Dyrandz Famador 18 August 2015 в 09:03
поделиться

2 ответа

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

Надеюсь, это вам поможет

16
ответ дан 29 November 2019 в 06:19
поделиться
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 символами влево от конца или начала строки.

8
ответ дан 29 November 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: