СУБСТР и ИНСТР SQL Oracle - PullRequest
       0

СУБСТР и ИНСТР SQL Oracle

0 голосов
/ 01 января 2019

Я начал использовать SUBSTR и INSTR в Oracle, но я запутался, когда натолкнулся на это.

SELECT PHONE, SUBSTR(PHONE, 1, INSTR(PHONE, '-') -1)
FROM DIRECTORY;

Так что я знаю, что SUBSTR обрезает значения, и INSTR показывает, где это вхождение, но примерЯ поставил выше, смутил меня, потому что результат его 362. Когда мое первоначальное значение было 362-127-4285.Как это работает?

Ответы [ 2 ]

0 голосов
/ 02 января 2019
SELECT PHONE, SUBSTR(PHONE, 1, INSTR(PHONE, '-',1,1) -1)
FROM DIRECTORY;

INSTR(String,'char_Search','position from where start searching','occurance')

Если мы не указываем «исходную позицию» и «возникновение», то по умолчанию он принимает значение 1,1.

Поэтому по умолчанию он принимает значение INSTR (телефон, '-', 1,1).--sql возвращает 1-ое вхождение строки string '-' это позиция 4, а затем SUBSTR (PHONE, 1 - 4) 1, которая является SUBSTR (PHONE, 1, 3).

SUBSTR (String, 'начальная позиция',' без символа ') SUBSTR (PHONE, 1, 3) - дает подстроку столбца PHONE из 1-го, который имеет длину 3 символа, что составляет 362

Пример: используя этозначение - '362-127-4285'

SELECT '362-127-4285' Example,
SUBSTR('362-127-4285',1,INSTR('362-127-4285','-')-1) Result 
FROM DUAL
0 голосов
/ 01 января 2019

INSTR(PHONE, '-') дает индекс из - в столбце PHONE, в вашем случае 4а затем SUBSTR(PHONE, 1, 4 - 1) или SUBSTR(PHONE, 1, 3)дает подстроку столбца PHONE из 1st с длиной 3 символов, равной 362,если значение PHONE столбца равно 362-127-4285.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...