Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL Server

SQL Server CHARINDEX 함수 완벽 정리 – 문자열에서 부분 문자열 위치 찾기

이 글에서는 SQL Server의 CHARINDEX() 함수를 활용하여 긴 부모 문자열 안에서 특정 부분 문자열이 나타나는 위치를 찾는 방법을 소개합니다.

CHARINDEX 함수란?

CHARINDEX 함수는 SQL Server에서 지정한 시작 위치부터 큰 문자열 안에서 부분 문자열을 검색하는 데 사용됩니다. 함수는 부분 문자열을 찾은 위치를 반환하고, 찾지 못하면 0을 반환합니다. 문자열의 위치는 0이 아니라 1부터 시작한다는 점에 유의하세요.

구문

SQL Server에서 CHARINDEX 함수를 사용하는 기본 구문은 다음과 같습니다.

CHARINDEX(substring, string, [start_position])

매개변수

  1. substring: 검색하려는 부분 문자열입니다. 길이는 최대 8,000자로 제한됩니다.
  2. string: 검색 대상이 되는 문자열로, 텍스트 문자열, 표현식 또는 테이블의 열(column)을 지정할 수 있습니다.
  3. start_position: 선택 사항입니다. 검색을 시작할 문자열 내 위치를 의미하며, 첫 번째 위치는 1입니다.

참고 사항

  1. 문자열에서 첫 번째 문자의 위치는 1입니다.
  2. 부분 문자열을 찾지 못하면 CHARINDEX는 0을 반환합니다.
  3. CHARINDEX 함수는 SQL Server 2005부터 2017까지의 버전(SQL Server 2017, 2016, 2014, 2012, 2008 R2, 2008, 2005)에서 사용할 수 있습니다.
  4. 검색 시 대소문자 구분 여부는 데이터베이스의 데이터 정렬(collation) 설정에 따라 달라지며, 기본 설정에서는 대소문자를 구분하지 않습니다.

예제

CHARINDEX 함수가 실제로 어떻게 동작하는지 몇 가지 예제를 통해 살펴보겠습니다.

SELECT CHARINDEX('t', 'TipsMake.com');
-- 결과: 1 (대소문자를 구분하지 않으므로 첫 번째 'T'와 일치)

SELECT CHARINDEX('m', 'TipsMake.com', 2);
-- 결과: 5

SELECT CHARINDEX('m', 'TipsMake.com', 6);
-- 결과: 12

SELECT CHARINDEX('MA', 'TipsMake.com');
-- 결과: 5 (대소문자를 구분하지 않으므로 'Ma'와 일치)

SELECT CHARINDEX('OM', 'TipsMake.com', 6);
-- 결과: 11 (대소문자를 구분하지 않으므로 소문자 'om'과 일치)

SELECT CHARINDEX('z', 'TipsMake.com');
-- 결과: 0 (문자열에 'z'가 존재하지 않음)

위 예제에서 볼 수 있듯이, 세 번째 매개변수인 시작 위치를 조절하면 같은 문자열 안에서 뒤에 있는 일치 항목을 차례로 찾아낼 수 있습니다. 또한 검색 패턴이 문자열에 존재하지 않으면 0이 반환되므로, 이 반환값을 활용하면 IF 문이나 CASE 식에서 특정 문자의 포함 여부를 손쉽게 판별할 수 있습니다.