티스토리 뷰

반응형

쿼리를 작성하다보면 문자열에 특정 문자가 유무를 확인해야하는 경우가 있습니다. 이럴 때 사용할 수 있는 게 바로 CHARINDEX 함수 입니다.


MSSQL의 CHARINDEX 함수는 특정 문자가 다른 문자열 내에서 처음으로 나타나는 위치를 찾아줍니다. CHARINDEX 함수는 대소문자를 구분하고 일치하는 첫 번째 문자열의 위치를 INT형으로 반환해줍니다.

 

먼저 CHARINDEX 함수의 매개변수에 대해서 알아보겠습니다.

CHARINDEX(expression, searchstring, [start_location])

- expression : 검색 하려는 문자 또는 문자열.
- searchstring : 찾으려는 문자 또는 문자열.
- start_location(생략가능) : 검색을 시작할 위치 지정. 생략하면 문자열의 맨 처음부터 검색 시작.


다음 예제를 보면서 좀 더 자세하게 알아보겠습니다.

--시작위치가 없는 경우
SELECT CHARINDEX('o', 'Hello world') AS Position;
--시작위치를 6으로 설정했을 때
SELECT CHARINDEX('o', 'Hello world', 6) AS Position;
--시작위치를 9로 설정했을 때
SELECT CHARINDEX('o', 'Hello world', 9) AS Position;

맨 처음 예제처럼 시작위치가 없는 경우 H부터 검색을 시작합니다. 첫번째 문자는 1로 시작하기 때문에 반환값은 5번째 o를 찾아 5로 나오게 됩니다. 시작위치를 6으로 설정하는 경우 5번째 있는 o는 건너뛰고 공백부터 검색을 시작합니다. 그 다음에 존재하는 o는 두 칸 뒤에 나오기 때문에 반환값은 8이 됩니다. 마지막으로 시작위치를 9로 설정하게 되면 r부터 검색을 시작하게 됩니다. r이후에는 더이상 o가 나오지 않기 때문에 반환값은 0으로 나오게 됩니다.

 

실제로 찾고자 하는 문자가 해당 문자열에 없는 경우 0, 있는경우 무조건 1이상의 수가 나오기 때문에 문자열 존재 유무를 1이상인 경우로 조건 걸어 확인할 수 있습니다. 이렇게 MSSQL CHARINDEX 함수로 특정 문자 유무 확인하는 법에 대해 알아봤습니다. 사용법을 알았으니 함수를 활용해 마음대로 쿼리를 만들어보시기 바랍니다. 감사합니다.

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함