다음을 통해 공유


CHARINDEX(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 웨어하우스

이 함수는 두 번째 문자 식 내에서 하나의 문자 식을 찾고, 있는 경우 첫 번째 식의 시작 위치를 반환합니다.

Transact-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 식에 값 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

다음 예제에서는 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

이 예제에서는 검색된 문자열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