SUBSTR и INSTR SQL Oracle

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

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

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
33 309
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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 (phone, '-', 1,1) --sql возвращает 1-е появление строки '-', позиция равна 4 а затем SUBSTR (PHONE, 1, 4 - 1), который является SUBSTR (PHONE, 1, 3).

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

Ex: using this value--'362-127-4285'

SELECT '362-127-4285' Example,
SUBSTR('362-127-4285',1,INSTR('362-127-4285','-')-1) Result 
FROM DUAL
SQL>select substr('[email protected]',1,instr('[email protected]','@')-1) from dual;

Другие вопросы по теме