Функция SQL Server CHARINDEX()

В этом руководстве вы узнаете, как использовать функцию SQL Server CHARINDEX() для поиска подстроки в строке.

Обзор функции SQL Server CHARINDEX()

Функция SQL Server CHARINDEX() ищет подстроку внутри строки, начиная с указанного местоположения. Она возвращает позицию подстроки, найденной в искомой строке, или ноль, если подстрока не найдена. Начальная возвращаемая позиция начинается с 1, а не с 0.

Вот синтаксис функции CHARINDEX():

CHARINDEX(substring, string [, start_location])

В этом синтаксисе:

  • подстрока — подстрока для поиска. Ее длина ограничена 8000 символами.
  • string может быть литеральной строкой, выражением или столбцом. Это строка для поиска.
  • start_location — это местоположение, с которого начинается поиск. Start_location — это целое число, большое целое число или выражение, которое вычисляется как значение этих типов данных.

Параметр start_location необязателен. Если он пропущен, равен нулю или отрицательному значению, поиск начинается с начала строки.

Обратите внимание, что функция CHARINDEX() может выполнять как чувствительный, так и нечувствительный к регистру поиск на основе указанного сопоставления.

Примеры функций SQL Server CHARINDEX()

Давайте рассмотрим несколько примеров использования функции CHARINDEX().

1) Использование SQL Server CHARINDEX() для выполнения одиночного поиска

В следующем примере функция CHARINDEX() используется для выполнения простого поиска строки «SQL» в «SQL Server CHARINDEX».

SELECT 
    CHARINDEX('SQL', 'SQL Server CHARINDEX') position;

Вот что получилось:

position
-----------
1
(1 row affected)

2) Использование функции CHARINDEX() для выполнения поиска без учета регистра

В этом операторе показано, как использовать функцию CHARINDEX() для выполнения поиска без учета регистра строки «SERVER» в «SQL Server CHARINDEX»:

SELECT 
    CHARINDEX(
        'SERVER', 
        'SQL Server CHARINDEX'
    ) position;

Выход:

position
-----------
5
(1 row affected)

3) Использование функции CHARINDEX() для выполнения поиска с учетом регистра

В следующем примере функция CHARINDEX() используется для выполнения поиска строки «SERVER» с учетом регистра в строке SQL Server CHARINDEX.

SELECT 
    CHARINDEX(
        'SERVER', 
        'SQL Server CHARINDEX' 
        COLLATE Latin1_General_CS_AS
    ) position;

Выход:

position
-----------
0
(1 row affected)

4) Использование функции CHARINDEX() для поиска несуществующей подстроки

В следующем примере функция CHARINDEX() используется для поиска подстроки «needle» в строке «This is a haystack»:

DECLARE @haystack VARCHAR(100);  
SELECT @haystack = 'This is a haystack';  
SELECT CHARINDEX('needle', @haystack);  

Выход:

position
-----------
0
(1 row affected)

5) Использование функции CHARINDEX() для поиска с определенной позиции

В этом примере параметр start_location используется для начала поиска «is» с пятого и десятого символа строки «Это моя сестра»:

SELECT 
    CHARINDEX('is','This is a my sister',5) start_at_fifth,
    CHARINDEX('is','This is a my sister',10) start_at_tenth;

Вот что получилось:

start_at_fifth start_at_tenth
-------------- --------------
6              15
(1 row affected)

Краткое содержание

  • Используйте функцию SQL Server CHARINDEX() для поиска подстроки в строке, начиная с указанного места, и возврата позиции подстроки.
Мирослав С.

Автор статей, ИБ-специалист