CHARINDEX (Transact-SQL)

Возвращает начальную позицию указанного выражения в символьной строке.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 

Аргументы

  • expression1
    Выражение, содержащее последовательность символов для поиска. Аргумент expression1 является выражением категории типа данных символьной строки.
  • expression2
    Выражение, обычно столбец, в котором выполняется поиск заданной последовательности. Аргумент expression2 принадлежит к категории типа данных символьной строки.
  • start_location
    Позиция символа, с которой начинается поиск expression1 в expression2. Если аргумент start_location не указан, имеет отрицательное значение или равен нулю, поиск начинается с начала expression2. Аргумент start_location может иметь тип bigint.

Типы возвращаемых данных

bigint если аргумент expression2 имеет тип данных varchar(max), nvarchar(max) или varbinary(max); в противном случае int.

Замечания

Если аргумент expression1 или аргумент expression2 имеет тип данных Юникода (nvarchar или nchar), а другой аргумент — нет, то он преобразовывается в тип данных Юникода. Функция CHARINDEX не может использоваться с типами данных text, ntext и image.

Если аргумент expression1 или аргумент expression2 имеет тип NULL, то функция CHARINDEX возвращает NULL, если уровень совместимости базы данных равен 70 или выше. Если уровень совместимости базы данных равен 65 или ниже, CHARINDEX возвращает NULL, только если и аргумент expression1 и аргумент expression2 имеют значение NULL.

Если аргумент expression1 не найден в expression2, функция CHARINDEX возвращает 0.

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

Начальная возвращенная позиция начинается с 1, а не с 0.

Примеры

В коде следующего примера возвращается позиция, с которой начинается последовательность символов bicycle в столбце DocumentSummary таблицы Document.

USE AdventureWorks;
GO
SELECT CHARINDEX('bicycle', DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO

Ниже приводится результирующий набор.

----------- 
48          

В следующем примере используется необязательный аргумент start_location для поиска bicycle в столбце DocumentSummary, начиная с пятого символа.

USE AdventureWorks;
GO
SELECT CHARINDEX('bicycle', DocumentSummary, 5)
FROM Production.Document
WHERE DocumentID = 3;
GO

Ниже приводится результирующий набор.

----------- 
48          

(1 row(s) affected)

В следующем примере показан результирующий набор, если аргумент expression1 не найден в аргументе expression2.

USE AdventureWorks;
GO
SELECT CHARINDEX('bike', DocumentSummary)
FROM Production.Document
WHERE DocumentID =6;
GO

Ниже приводится результирующий набор.

----------- 
0          

(1 row(s) affected)

В следующем примере используется функция COLLATE.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test', 'Das ist ein Test'  COLLATE Latin1_General_BIN);
GO

См. также

Справочник

+ (Сцепление строк) (Transact-SQL)
Строковые функции (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005