Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к: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