CHARINDEX(Transact-SQL)
적용 대상: 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 값이면, expressionToSearch의 시작 부분에서 검색이 시작됩니다.
반환 형식
expressionToSearch의 데이터 형식이 nvarchar(max) , varbinary(max) 또는 varchar(max) 이면 bigint이고, 그렇지 않으면 int입니다.
설명
expressionToFind 또는 expressionToSearch 식에 유니코드 데이터 형식(nchar 또는 nvarchar)이 있고 다른 식에는 이러한 형식이 없으면, CHARINDEX 함수에서 다른 식을 유니코드 데이터 형식으로 변환합니다. CHARINDEX는 image, ntext 및 text 데이터 형식으로 사용할 수 없습니다.
expressionToFind 또는 expressionToSearch 식에 NULL 값이 있으면 CHARINDEX에서 NULL을 반환합니다.
CHARINDEX가 expressionToSearch 내에서 expressionToFind를 찾지 못하면 CHARINDEX에서 0을 반환합니다.
CHARINDEX는 입력 데이터 정렬을 기반으로 하는 비교를 수행합니다. 지정된 데이터 정렬에서 비교를 수행하려면 COLLATE를 사용하여 명시적 데이터 정렬을 입력에 적용합니다.
반환된 시작 위치는 0이 아닌 1부터 시작합니다.
0x0000(char(0) )은 Windows 데이터 정렬에서 정의되지 않은 문자이며 CHARINDEX에 포함할 수 없습니다.
보조 문자(서로게이트 쌍)
SC 데이터 정렬을 사용하는 경우 start_location과 반환 값 둘 다 서로게이트 쌍을 둘이 아닌 한 문자로 계산합니다. 자세한 내용은 Collation and Unicode Support을 참조하세요.
예제
A. 식의 시작 위치 반환
다음 예제에서는 검색된 @document
문자열 값 변수에서 bicycle
을 검색합니다.
DECLARE @document VARCHAR(64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document);
GO
결과 집합은 다음과 같습니다.
-----------
48
B. 특정 위치에서 검색
다음 예제에서는 선택적 start_location 매개 변수를 사용하여 검색된 @document
문자열 값 변수의 다섯 번째 문자에서 vital
에 대한 검색을 시작합니다.
DECLARE @document VARCHAR(64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('vital', @document, 5);
GO
결과 집합은 다음과 같습니다.
-----------
16
(1 row(s) affected)
C. 존재하지 않는 식 검색
다음 예제에서는 CHARINDEX가 expressionToSearch 내에서 expressionToFind를 찾지 못했을 때의 결과 집합을 보여 줍니다.
DECLARE @document VARCHAR(64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bike', @document);
GO
결과 집합은 다음과 같습니다.
-----------
0
(1 row(s) affected)
D. 대/소문자 구분 검색 수행
다음 예제에서는 'This is a Test``'
검색 문자열에서 'TEST'
문자열에 대한 대/소문자 구분 검색을 보여 줍니다.
USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX ( 'TEST',
'This is a Test'
COLLATE Latin1_General_CS_AS);
결과 집합은 다음과 같습니다.
-----------
0
다음 예제에서는 'This is a Test'
에서 '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. 문자열 식의 처음부터 검색
다음 예제에서는 This is a string
의 위치 1(첫 번째 문자)에서 시작하여 This is a string
문자열 중 is
문자열의 첫 번째 위치를 반환합니다.
SELECT CHARINDEX('is', 'This is a string');
결과 집합은 다음과 같습니다.
---------
3
G. 첫 번째 위치 이외의 위치에서 검색
다음 예제에서는 위치 4(네 번째 문자)에서 검색을 시작하여 This is a string
문자열 중 is
문자열의 첫 번째 위치를 반환합니다.
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
참고 항목
LEN(Transact-SQL)
PATINDEX(Transact-SQL)
문자열 함수(Transact-SQL)
+(문자열 연결)(Transact-SQL)
데이터 정렬 및 유니코드 지원