Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Эта функция выполняет поиск одного символьного выражения внутри второго символьного выражения, возвращая начальную позицию первого выражения, если найдено.
Соглашения о синтаксисе Transact-SQL
Синтаксис
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
Аргументы
expressionToFind
Символьное выражение, содержащее последовательность для поиска. expressionToFind имеет ограничение в 8 000 символов.
expressionToSearch
Символьное выражение, в котором производится поиск.
start_location
Выражение типа integer или bigint, с которого начинается поиск. Если start_location не указан, имеет отрицательное значение или имеет нулевое (0) значение, поиск начинается в начале выраженияToSearch.
Типы возвращаемых данных
bigint, если expressionToSearch имеет тип данных nvarchar(max), varbinary(max) или varchar(max); в противном случае int.
Замечания
Если выражение expressionToFind или expressionToSearch имеет тип данных Юникода (nchar или nvarchar), а другое выражение не выполняется, CHARINDEX функция преобразует это другое выражение в тип данных Юникода.
CHARINDEX нельзя использовать с типами данных изображений, ntext или текстовых данных.
Если выражение expressionToFind или expressionToSearch имеет NULL значение, CHARINDEX возвращается NULL.
Если CHARINDEX не найти выражениеToFind в expressionToSearch, CHARINDEX возвращается 0.
CHARINDEX выполняет сравнения на основе входных параметров сортировки. Чтобы выполнить сравнение в указанной сортировке, используйте для COLLATE применения явной сортировки к входным данным.
Начальная возвращенная позиция начинается с 1, а не с 0.
0x0000 (char(0)) — это неопределенный символ в параметрах сортировки Windows и не может быть включен в CHARINDEXнего.
Дополнительные символы (суррогатные пары)
При использовании дополнительных параметров сортировки символов (SC) оба start_location и возвращаемое значение считают суррогатные пары как один символ, а не два. Дополнительные сведения см. в разделе о поддержке сортировки и Юникода.
Примеры
А. Возвращает начальную позицию выражения
В этом примере выполняется поиск bicycle в переменной строкового значения @document.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document);
GO
Вот результирующий набор.
-----------
48
B. Поиск по определенной позиции
В этом примере используется необязательный параметр start_location для запуска поиска vital в пятом столбце переменной строкового значения @document.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('vital', @document, 5);
GO
Вот результирующий набор.
-----------
16
В. Поиск несуществующего выражения
В этом примере показан результирующий набор, если CHARINDEX не найти выражениеToFind в expressionToSearch.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bike', @document);
GO
Вот результирующий набор.
-----------
0
D. Выполнение поиска с учетом регистра
В этом примере выполняется поиск строки TEST в строке This is a Test с учетом регистра.
USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CS_AS);
Вот результирующий набор.
-----------
0
В этом примере выполняется поиск строки Test в строке This is a Test с учетом регистра.
USE tempdb;
GO
SELECT CHARINDEX('Test', 'This is a Test' COLLATE Latin1_General_CS_AS);
Вот результирующий набор.
-----------
11
Е. Выполнение нечувствительного поиска по регистру
В этом примере показан нечувствительный поиск регистра для строки TEST в строке This is a Testпоиска.
USE tempdb;
GO
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CI_AS);
GO
Вот результирующий набор.
-----------
11
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
F. Поиск с начала строкового выражения
В этом примере возвращается первая позиция строки is в строке This is a string, начиная с позиции 1 (первого символа) в строке This is a string.
SELECT CHARINDEX('is', 'This is a string');
Вот результирующий набор.
---------
3
G. Поиск из позиции, отличной от первой позиции
В этом примере возвращается первая позиция строки is в строке This is a string, начиная с позиции 4 (четвертого символа).
SELECT CHARINDEX('is', 'This is a string', 4);
Вот результирующий набор.
---------
6
H. Результаты, когда строка не найдена
В этом примере показано возвращаемое значение, если CHARINDEX строка не находит string_pattern в строке поиска.
SELECT TOP (1) CHARINDEX('at', 'This is a string')
FROM dbo.DimCustomer;
Вот результирующий набор.
---------
0