Совместное применение функций 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. Вложенные функции INSTR и SUBSTR обработали данные и выдали результат (см. шаг 2). Далее необходимо исключить запятую из названия страны. Для этого, полученное значение функцией INSTR надо уменьшить на 1.  Итоговый запрос будет следующим:

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

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

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

Шаг 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 *