CHARINDEX(Transact-SQL)

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

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

구문

CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )

인수

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

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

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

반환 형식

expressionToSearch가 varchar(max), nvarchar(max) 또는 varbinary(max) 데이터 형식일 경우 bigint이고 그렇지 않으면 int입니다.

주의

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

expressionToFind 또는 expressionToSearch가 NULL일 경우 CHARINDEX가 NULL을 반환합니다.

expressionToFind가 expressionToSearch 내에 없을 경우 CHARINDEX가 0을 반환합니다.

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

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

0x0000(char(0))은 Windows 데이터 정렬에서 정의되지 않은 문자이며 CHARINDEX에 포함할 수 없습니다.

보조 문자(서로게이트 쌍)

SC 데이터 정렬을 사용하는 경우 start_location과 반환 값 둘 다 서로게이트 쌍을 둘이 아닌 한 문자로 계산합니다. 자세한 내용은 데이터 정렬 및 유니코드 지원을 참조하십시오.

1.식의 시작 위치 반환

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

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

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

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

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

2.특정 위치에서 검색

다음 예에서는 선택적 start_location 매개 변수를 사용하여 DocumentSummary 열의 5번째 문자에서 vital을 찾기 시작합니다.

USE AdventureWorks2012;
GO
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)

3.존재하지 않는 식 검색

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

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

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

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

-----------

0

(1 row(s) affected)

4.대/소문자 구분 검색 수행

다음 예에서는 'Das ist 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 ist ein Test'의 문자열 'Test'에 대해 대/소문자 구분 검색을 수행합니다.

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

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

-----------

13

5.대/소문자를 구분하지 않는 검색 수행

다음 예에서는 'Das ist ein Test'의 문자열 'TEST'에 대해 대/소문자를 구분하지 않는 검색을 수행합니다.

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

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

-----------

13

참고 항목

참조

문자열 함수(Transact-SQL)

+(문자열 연결)(Transact-SQL)

개념

데이터 정렬 및 유니코드 지원