다음을 통해 공유


CHARINDEX(Transact-SQL)

expression2에서 expression1을 검색하고 시작 위치(찾은 경우)를 반환합니다. 검색은 start_location에서 시작됩니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 

인수

  • expression1
    찾을 시퀀스가 포함된 문자 입니다. expression1은 8000자로 제한됩니다.

  • expression2
    검색할 문자 식입니다.

  • start_location
    검색이 시작되는 정수 또는 bigint 식입니다. start_location이 지정되지 않았거나 음수이거나 0이면 검색이 expression2의 시작 부분에서 시작됩니다.

반환 형식

expression2가 varchar(max), nvarchar(max) 또는 varbinary(max) 데이터 형식인 경우 bigint이며 그 외의 경우에는 int입니다.

주의

expression1이나 expression2 중 하나만 유니코드 데이터 형식(nvarchar 또는 nchar)일 경우 다른 하나도 유니코드 데이터 형식으로 변환됩니다. CHARINDEX는 text, ntext 및 image 데이터 형식과 함께 사용할 수 없습니다.

expression1이나 expression2가 NULL일 경우 CHARINDEX는 데이터베이스 호환성 수준이 70 이상일 때 NULL을 반환합니다. 데이터베이스 호환성 수준이 65이하일 경우 CHARINDEX는 expression1과expression2가 모두 NULL인 경우에만 NULL을 반환합니다.

expression1이 expression2 내에 없으면 CHARINDEX가 0을 반환합니다.

CHARINDEX는 입력의 데이터 정렬을 기반으로 비교를 수행합니다. 지정된 데이터 정렬에서 비교를 수행하려면 COLLATE를 사용하여 입력에 명시적 데이터 정렬을 적용할 수 있습니다.

반환된 시작 위치는 0이 아닌 1부터 시작합니다.

다음 예에서는 Document 테이블의 DocumentSummary 열에서 문자 시퀀스 bicycle이 시작되는 위치를 반환합니다.

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.'
SELECT CHARINDEX('bicycle', @document)
GO

결과 집합은 다음과 같습니다.

----------- 
48          

다음 예에서는 start_location 매개 변수를 사용하여 DocumentSummary 열의 5번째 문자에서 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)

다음 예에서는 expression1이 expression2 내에 없을 때의 결과 집합을 보여 줍니다.

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.'
SELECT CHARINDEX('bike', @document)
GO

결과 집합은 다음과 같습니다.

----------- 
0          

(1 row(s) affected)

다음 예에서는 'Das jst ein Test'에서 대/소문자를 구분하여 문자열 'TEST'를 찾습니다.

USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX ( 'TEST',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS)

결과 집합은 다음과 같습니다.

----------- 
0          

다음 예에서는 'Das jst ein Test'에서 대/소문자를 구분하여 문자열 'Test'를 찾습니다.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS)

결과 집합은 다음과 같습니다.

----------- 
13          

다음 예에서는 'Das jst ein Test'에서 대/소문자를 구분하지 않고 문자열 'TEST'를 찾습니다.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CI_AS)
GO

결과 집합은 다음과 같습니다.

----------- 
13