적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System(PDW)
Microsoft Fabric의 SQL 분석 엔드포인트
Microsoft Fabric의 웨어하우스
이 함수는 두 번째 문자 식 내에서 하나의 문자 식을 찾고, 있는 경우 첫 번째 식의 시작 위치를 반환합니다.
구문
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
인수
expressionToFind
찾으려는 시퀀스가 포함된 문자 식입니다. expressionToFind 의 문자 제한은 8,000자입니다.
expressionToSearch
검색할 문자 식입니다.
start_location
검색이 시작되는 integer 또는 bigint 식입니다.
start_location 지정되지 않았거나 음수 값이 있거나 값이0
0이면 expressionToSearch의 시작 부분에서 검색이 시작됩니다.
반환 형식
expressionToSearch의 데이터 형식이 nvarchar(max) , varbinary(max) 또는 varchar(max) 이면 bigint이고, 그렇지 않으면 int입니다.
설명
expressionToFind 또는 expressionToSearch 식에 유니코드 데이터 형식(nchar 또는 nvarchar)이 있고 다른 식이 없는 CHARINDEX
경우 함수는 다른 식을 유니코드 데이터 형식으로 변환합니다.
CHARINDEX
는 이미지, ntext 또는 텍스트 데이터 형식과 함께 사용할 수 없습니다.
expressionToFind 또는 expressionToSearch 식에 값 CHARINDEX
이 있으면 NULL
.NULL
expressionToSearchCHARINDEX
내에서 expressionToFind를 찾을 수 없으면 CHARINDEX
.0
CHARINDEX
는 입력 데이터 정렬을 기반으로 비교를 수행합니다. 지정된 데이터 정렬에서 비교를 수행하려면 입력에 명시적 데이터 정렬을 적용하는 데 사용합니다 COLLATE
.
반환된 시작 위치는 0이 아닌 1부터 시작합니다.
0x0000
(char(0))는 Windows 데이터 정렬에서 정의되지 않은 문자이며 에 포함 CHARINDEX
할 수 없습니다.
보조 문자(서로게이트 쌍)
SC(보조 문자) 데이터 정렬을 사용하는 경우 start_location 및 반환 값은 서로게이트 쌍을 두 문자가 아닌 한 문자로 계산합니다. 자세한 내용은 데이터 정렬 및 유니코드 지원을 참조하세요.
예제
A. 식의 시작 위치 반환
다음 예제에서는 검색된 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
C. 존재하지 않는 식 검색
이 예제에서는 expressionToSearch 내에서 expressionToFind를 찾을 수 없는 경우 CHARINDEX
의 결과 집합을 보여 줍니다.
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
E. 대/소문자를 구분하지 않는 검색 수행
이 예제에서는 검색된 문자열This is a Test
의 문자열 TEST
에 대한 대/소문자를 구분하지 않는 검색을 보여 줍니다.
USE tempdb;
GO
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CI_AS);
GO
결과 집합은 다음과 같습니다.
-----------
11
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)
F. 문자열 식의 시작 부분부터 검색
다음 예제에서는 is
의 위치 1(첫 번째 문자)에서 시작하여 This is a string
문자열 중 This is a string
문자열의 첫 번째 위치를 반환합니다.
SELECT CHARINDEX('is', 'This is a string');
결과 집합은 다음과 같습니다.
---------
3
G. 첫 번째 위치가 아닌 위치에서 검색
다음 예제에서는 위치 4(네 번째 문자)에서 검색을 시작하여 is
문자열 중 This is a string
문자열의 첫 번째 위치를 반환합니다.
SELECT CHARINDEX('is', 'This is a string', 4);
결과 집합은 다음과 같습니다.
---------
6
H. 문자열을 찾을 수 없는 경우의 결과
이 예제에서는 검색된 문자열에서 string_pattern 문자열을 찾을 수 없는 경우 CHARINDEX
의 반환 값을 보여줍니다.
SELECT TOP (1) CHARINDEX('at', 'This is a string')
FROM dbo.DimCustomer;
결과 집합은 다음과 같습니다.
---------
0