[MSSQL] CHARINDEX 함수, 특정 문자 찾기 (INSTR, IndexOf)

SQL Server에서 CHARINDEX() 함수는 문자열에서 특정 문자를 찾고 위치를 반환한는 함수이다. 오라클 SQL의 INSTR 함수와는 다르게 뒤에서 부터 찾는 기능은 지원하지 않고, 문자열의 앞부터 또는 특정 위치부터 문자를 검색한다.

 

CHARINDEX("찾을문자", "문자열", "시작위치")

 

찾을 문자가 존재하면 위치를 리턴하고, 존재하지 않으면 "0"을 리턴한다.

 

기본 사용법

SELECT CHARINDEX('sql', 'Microsoft SQL Server')

 

대소문자 구분없이 'sql' 문자를 찾아서 위치를 리턴하다. 시작위치를 생략하면 첫번째 문자부터 찾는다.

 

시작위치를 지정하여 찾기

SELECT CHARINDEX('sql', 'Microsoft SQL Server', 11)

 

문자열의 11번째 위치부터 'sql' 문자를 찾는다. (문자열의 길이는 1부터 시작한다)

 

대소문자를 구분하여 찾기

SELECT CHARINDEX('SQL', 'Microsoft SQL Server' COLLATE Latin1_General_CS_AS)

 

대소문자를 구분하여 'SQL' 문자를 찾는다.

 

대소문자 구분 : COLLATE Latin1_General_CS_AS

대소문자 구문안함 : COLLATE Latin1_General_CI_AS (기본값)

 

두번째 문자 찾기

DECLARE @str VARCHAR(100) = 'SQL Server 2017, SQL Server 2019'

SELECT CHARINDEX('sql', @str, CHARINDEX('sql', @str) + 1)

 

첫번째 찾은 문자 위치에 +1 하여 두번째 위치를 찾을 수 있다.

 

사용 예제

 

 

 

댓글

Designed by JB FACTORY