※MSSQL CHARINDEX 함수 활용 방법에 대해서 알아보겠습니다.
MSSQL에서 CHARINDEX 함수는 문자열에 특정 문자를 찾고 위치값을 반환해 주는 함수입니다. 문자열의 앞부분이나 특정 위치부터 문자위치를 찾아주고 있습니다.
함수 사용법
CHARINDEX('찾고자 하는 문자','문자','시작위치');
CHARINDEX함수가 실행되고 나서 찾은 문자가 존재하면 위치 값을 숫자로 표현해 주고, 존재하지 않으면 '0'을 리턴하게 됩니다.
시작위치를 지정하여 사용하는 방법
SELECT CHARINDEX('EF', 'ABCDEFG 123456',1);
문자열의 1번 위치부터 찾아서 'EF'을 찾고 찾은 위치값 4를 리턴하여 준다.
대소문자를 구별하여 찾기
SELECT CHARINDEX('eF','ABCDEFG 12345 ABCeFG EF1234' COLLATE Latin1_General_CS_AS);
문자열의 첫 번째부터 찾고 'eF'을 찾아서 위치값 18을 리턴하여 준다. 다시 말해 소문자 대문자를 구분하여 위치를 찾기 때문에 대문자로만 되어 있는 부분은 찾지 못하게 된다.
※ 대소문자 구분: COLLATE Latin1_General_CS_AS
※ 대소문자 구분 없이: COLLATE Latin1_General_CI_AS (기본)
두 번째 문자열 찾기
Declare @Str Varchar(50) = 'Abcdefg 123345 AbECDEF 1234'
Select CharIndex('23', @Str, CharIndex('23', @Str) + 1 );
문자열의 첫 번째를 찾고 다음 (+1)하여 두 번째를 찾아서 리턴하여 준다. 대소문자 구분 없이 찾아서 위치 값을 리턴하게 된다.
다시 정리하자면 내가 찾고자 하는 문자를 문자열에서 찾아 특정위치에 문자만 찾아 다시 편집할 수 있고, 특정위치에 내용을 찾아서 지울 수도 있습니다. 그리고 특정위치를 찾아서 그 위치에 문구를 보여주어야 한다면 유용하게 사용할 수 있겠습니다.
'IT > MsSql' 카테고리의 다른 글
MSSQL @@ERROR와 TRY 비교 (0) | 2023.05.04 |
---|---|
MSSQL 단어 자동 완성, 테이블명 자동인식 (0) | 2023.04.27 |
msSql NOLOCK 사용법, WITH(NOLOCK) (0) | 2023.04.25 |
msSql 특정문자 검색 리터럴 문자 찾기 (0) | 2023.04.25 |
MSSQL TEMP TABLE 속도 서브쿼리 속도 (0) | 2023.04.10 |