Функции SUBSTR и INSTR в Oracle SQL

Функции SUBSTR и INSTR в Oracle SQL

Функция имеет входное и выходное значение. Входное значение функции называется аргументом. Ноль или более аргументов может быть передано на вход функции в качестве данных для обработки. В данном примере a, b, c являются входными аргументами функции F:

F( a, b, c, …) = результат.

Функции могут быть вложенной частью другой функции, например,

F1 (a, b, F2 (x, y), d),

где F2,

принимает два входных параметра x и y, и образует третий из четырех параметров функции F1. Функции могут работать со всеми доступными типами данных. Наиболее часто используемыми являются символьные, дата и числовые данные.

В Oracle есть два типа функций: однострочные и многострочные функции. Однострочные функции возвращают результат для каждой строки, а многострочные один результат для множества строк. В данной статье рассматриваются однострочные функции – SUBSTR и INSTR. Существует несколько типов однострочных функций, такие как символьные, числовые, дата, преобразования и общие. Функции SUBSTR и INSTR относятся к функциям по работе с символьными данными.

Функции по работе с символьными данными – SUBSTR и INSTR

Символьные данные или строки являются универсальными, т.к. они позволяют хранить практически любой тип данных. Функции, которые работают с символьными данными, классифицируются на функции преобразования регистра символов и манипулирования символами.

Функции манипулирования символами это CONCAT, LENGTH, SUBSTR, INSTR, LPAD, RPAD, TRIM и REPLACE. Они используются для извлечения, преобразования, форматирования и символьных строк.

Функция SUBSTR принимает три параметра и возвращает строку, состоящую из количества символов, извлеченных из исходной строки, начиная с указанной начальной позиции:

SUBSTR (строка, начальная позиция, количество символов).

В приведенном примере извлекаются символы начиная с первой по четвертой позиции из колонки last_name. Также для сравнения выводятся исходные данные колонки last_name.

SELECT last_name, SUBSTR (last_name, 1, 4)
FROM employees  

Функция INSTR возвращает число, представляющее позицию в исходной строке, начиная с заданной начальной позиции, где n-ное вхождение элемента поиска начинается:

INSTR (строка, элемент поиска, [начальная позиция], [n-ное вхождение элемента поиска]

Следующий запрос показывает позицию строчной буквы a для каждой строки колонки last_name. Если в строке встречаются два или более символов a, то будет отображен позиция первого/начального из них. Для  сравнения и анализа, также выводятся исходные данные из данной колонки.

SELECT last_name, INSTR ( last_name,'a')
FROM employees 

Если необходимо также отобразить позицию заглавной буквы А в фамилии, то надо сперва перевести все символы фамилии в строчные, используя вложенную функцию LOWER. Запрос выглядит следующим образом:

SELECT last_name, INSTR (LOWER(last_name, 'a')
FROM employees 

Как видно из результата, теперь позиция заглавной буквы A тоже определяется, например, для Abel, Ande, Atkinson, Austin возвращается значение 1.

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

Leave a Reply

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