적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric의 SQL 분석 엔드포인트
Microsoft Fabric의 웨어하우스
Microsoft Fabric의 SQL 데이터베이스
이 함수는 두 번째 문자 식 내에서 하나의 문자 식을 찾고, 있는 경우 첫 번째 식의 시작 위치를 반환합니다.
구문
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 식에 값 NULL 이 있으면 CHARINDEX .NULL
CHARINDEX
내에서 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. 존재하지 않는 식 검색
이 예제에서는 CHARINDEX 내에서 expressionToFind를 찾을 수 없는 경우 의 결과 집합을 보여 줍니다.
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. 대/소문자를 구분하지 않는 검색 수행
이 예제에서는 검색된 문자열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의 위치 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. 문자열을 찾을 수 없는 경우의 결과
이 예제에서는 검색된 문자열에서 CHARINDEX 문자열을 찾을 수 없는 경우 의 반환 값을 보여줍니다.
SELECT TOP (1) CHARINDEX('at', 'This is a string')
FROM dbo.DimCustomer;
결과 집합은 다음과 같습니다.
---------
0