В этом руководстве вы узнали, как использовать функцию SQL Server PATINDEX() для поиска позиции шаблона в строке.
Обзор SQL Server PATINDEX()
Функция PATINDEX() возвращает позицию первого вхождения шаблона в строку. Синтаксис функции PATINDEX() следующий:
PATINDEX( '%pattern%' , input_string )
Функция PATINDEX() принимает два аргумента:
- шаблон — это символьное выражение, которое нужно найти. Он может содержать подстановочные знаки, такие как % и '_' в шаблоне. Значения подстановочных знаков такие же, как и в операторе LIKE.
- input_string — строка символов, в которой выполняется поиск шаблона.
Функция PATINDEX() возвращает целое число, которое указывает позицию первого вхождения шаблона в input_string или ноль шаблона, если он не найден. Функция PATINDEX() вернет NULL, если либо шаблон, либо input_string равны NULL.
Обратите внимание, что PATINDEX() ищет шаблон на основе сортировки входных данных. Если вы хотите использовать определенную сортировку, вы можете явно использовать предложение COLLATE.
Примеры функций SQL Server PATINDEX()
Давайте рассмотрим несколько примеров использования функции PATINDEX().
A) Простой пример SQL Server PATINDEX()
В этом примере возвращается начальная позиция подстроки «ern» в строке «SQL Pattern Index»:
SELECT PATINDEX('%ern%', 'SQL Pattern Index') position;
Вот что получилось:
position ----------- 9 (1 row affected)
B) Пример использования SQL Server PATINDEX() с несколькими подстановочными знаками
В этом примере используются подстановочные знаки % и _ для поиска позиции, с которой в строке «SQL Server String Function» начинается шаблон «f», за которым следуют любые два символа и «ction»:
SELECT PATINDEX('%f__ction%', 'SQL Server String Function') position;
Вывод следующий:
Position ----------- 19 (1 row affected)
C) Пример использования функции PATINDEX() SQL Server с табличным столбцом
В этом примере выполняется поиск позиции первого вхождения шаблона 2018 в значениях столбца product_name в таблице production.products из образца базы данных.
SELECT product_name, PATINDEX('%2018%', product_name) position FROM production.products WHERE product_name LIKE '%2018%' ORDER BY product_name;
На следующем рисунке показан частичный вывод:
В этом руководстве вы узнали, как использовать функцию SQL Server PATINDEX() для поиска позиции первого вхождения шаблона в строку.