Совместное применение функций LENGTH, SUBSTR и INSTR

Совместное применение функций LENGTH, SUBSTR и INSTR

В предыдущих постах были описаны такие функции манипулирования символами, как LENGTH, SUBSTR, INSTR. Они используются для извлечения, преобразования и форматирования символьных строк.

Ниже приводятся решения задач с применением комбинаций этих функций. Предполагается, что есть таблица students со следующими значениями колонок last_name, first_name и address.

Задача первая: Необходимо создать запрос извлечения из значений колонки address только названия страны (т.е. – запятая и город не должны присутствовать).

Один из вариантов решения:

Шаг 1. С помощью функции INSTR определяется позиция символа “,” (запятая).

SELECT address, INSTR (address, ',')
FROM students  

Шаг 2. Полученные значения передаются как третий аргумент для функции SUBSTR.

SELECT address, SUBSTR (address, 1, (INSTR (address, ',')))
FROM students 

Шаг 3. Необходимо скорректировать запрос шага 2 для исключения запятой в названии страны. Для этого, полученное значение функцией INSTR надо уменьшить на 1.  Итоговый запрос будет следующим:

SELECT last_name, first_name, SUBSTR (address, 1, (INSTR (address,  ','))-1) country 
FROM students 

Задача вторая: Создать запрос по извлечению из значений колонки address таблицы students только наименований города (т.е., страна и запятая не должны быть в получаемом результате).

Один из вариантов решения:

Шаг 1. С помощью функции INSTR определяется позиция символа “,” (запятая).

SELECT address, INSTR (address, ',')
FROM students  

Шаг 2. Полученные значения буду переданы как второй аргумент для функции SUBSTR – начальная позиция. Для исключения запятой и пробела перед названием города необходимо прибавить 2 (две позиции) к начальной позиции SUBSTR (ко второму аргументу). Для определения значения третьего параметра используется функция  LENGTH. Итоговый запрос будет следующим:

SELECT last_name, first_name, SUBSTR (address, (INSTR (address,  ',')+2), LENGTH (address) city
FROM students 

Leave a Reply

Your email address will not be published. Required fields are marked *