[MSSQL] 문자열 포함 여부 구하는 방법 3가지
- 데이터베이스/MSSQL
- 2025. 6. 6.
SQL Server에서 문자열에 특정 문자가 포함되어 있는지 확인하고 싶을 때는 CHARINDEX, PATINDEX, LIKE 세 가지 방법을 주로 사용한다. 각 함수는 용도에 따라 장단점이 다르며 상황에 따라서 적절한 방법을 선택하면 된다.
CHARINDEX (오라클 INSTR 함수와 유사)는 정확한 문자열이 어느 위치에 있는지를 찾을 수 있으며 ,
PATINDEX는 패턴 기반(와일드카드 포함)의 문자열 위치 탐색이 가능하다.
LIKE는 결과가 TRUE 또는 FALSE로만 반환되며, 조건 필터링에 가장 자주 사용된다.
목차 |
CHARINDEX 함수를 사용하여 문자열 포함 여부 구하기
SELECT CHARINDEX('SQL', 'MS SQL Server') AS result
![]() |
CHARINDEX('찾을 문자열', '검색 대상 문자열')
CHARINDEX 함수를 사용하여 문자열 'MS SQL Server' 안에서 'SQL'이라는 문자열의 위치를 찾는다.
찾을 문자열이 존재할 경우 문자열의 시작위치를 반환하고, 문자열이 없다면 0을 반환한다.
SELECT CHARINDEX('S', 'MS SQL Server') AS result1
, CHARINDEX('S', 'MS SQL Server', 3) AS result2
, CHARINDEX('S', 'MS SQL Server', 7) AS result3
![]() |
CHARINDEX('찾을 문자열', '검색 대상 문자열', '검색 시작위치' )
CHARINDEX 함수의 세 번째 인자를 생략하면 대상 문자열을 처음부터 검색하고, 세 번째 인자에 시작 위치를 입력하면 입력한 위치부터 찾을 문자열을 검색한다.
WITH emp AS (
SELECT 7698 empno, 'BLAKE' ename, 'MANAGER' job UNION ALL
SELECT 7782 empno, 'CLARK' ename, 'MANAGER' job UNION ALL
SELECT 7566 empno, 'JONES' ename, 'MANAGER' job
)
SELECT *
FROM emp
WHERE CHARINDEX('LA', ename) > 0
![]() |
위의 쿼리는 ename 컬럼에 'LA'라는 문자열이 포함된 사원만 조회하는 예제이다.
CHARINDEX('LA', ename) > 0 조건을 사용하여 문자열 포함 여부를 판별하고 데이터를 필터링한다.
WITH emp AS (
SELECT 7698 empno, 'BLAKE' ename, 'MANAGER' job UNION ALL
SELECT 7782 empno, 'CLARK' ename, 'MANAGER' job UNION ALL
SELECT 7566 empno, 'JONES' ename, 'MANAGER' job
)
SELECT empno
, ename
, CASE WHEN CHARINDEX('LA', ename) > 0 THEN 'Y' ELSE 'N' END AS ename_yn
FROM emp
![]() |
위의 쿼리는 ename 컬럼에 'LA'가 포함되어 있는지를 확인하여, 해당 여부를 'Y' 또는 'N'으로 표시하는 예제이다.
문자열 포함 여부를 판단할 때는 CHARINDEX와 CASE 문 조합이 유용하게 사용된다.
PATINDEX 함수를 사용하여 문자열 포함 여부 구하기
SELECT PATINDEX('%SQL%', 'MS SQL Server') AS result
![]() |
PATINDEX('%찾을 문자열%', '검색 대상 문자열')
위의 쿼리는 'MS SQL Server'라는 문자열에서 'SQL'이라는 부분 문자열이 처음 찾은 위치를 반환한다.
PATINDEX 함수는 와일드카드 패턴을 포함한 문자열 검색에 사용되며, 찾는 문자열이 없으면 0을 반환한다.
※ PATINDEX 함수는 검색 시작위치는 지정할 수 없음
SELECT PATINDEX('%[0-9]%', 'Microsoft SQL Server 2022')
, PATINDEX('%[a-z]%', 'Microsoft SQL Server 2022')
![]() |
위의 쿼리는 PATINDEX 함수에 문자 집합 패턴([0-9], [a-z]) 을 활용하여, 특정 문자 유형(숫자, 소문자)의 위치를 찾는 예제이다. PATINDEX는 단순한 포함 여부를 넘어서, 패턴 매칭의 위치 검색에 유용하게 사용된다.
WITH emp AS (
SELECT 7698 empno, 'BLAKE' ename, 'MANAGER' job UNION ALL
SELECT 7782 empno, 'CLARK' ename, 'MANAGER' job UNION ALL
SELECT 7566 empno, 'JONES' ename, 'MANAGER' job
)
SELECT *
FROM emp
WHERE PATINDEX('%LA%', ename) > 0
![]() |
위의 쿼리는 ename 컬럼에 'LA'라는 문자열이 포함된 사원만 조회하는 예제이다.
PATINDEX('%LA%', ename) > 0 조건을 사용하여 문자열 포함 여부를 판별하고 데이터를 필터링한다.
WITH emp AS (
SELECT 7698 empno, 'BLAKE' ename, 'MANAGER' job UNION ALL
SELECT 7782 empno, 'CLARK' ename, 'MANAGER' job UNION ALL
SELECT 7566 empno, 'JONES' ename, 'MANAGER' job
)
SELECT empno
, ename
, CASE WHEN PATINDEX('%LA%', ename) > 0 THEN 'Y' ELSE 'N' END AS ename_yn
FROM emp
![]() |
위의 쿼리는 ename 컬럼에 'LA'가 포함되어 있는지를 확인하여, 해당 여부를 'Y' 또는 'N'으로 표시하는 예제이다.
문자열 포함 여부를 판단할 때는 PATINDEX와 CASE 문 조합이 유용하게 사용된다.
LIKE 연산자를 사용하여 문자열 포함 여부 구하기
WITH emp AS (
SELECT 7698 empno, 'BLAKE' ename, 'MANAGER' job UNION ALL
SELECT 7782 empno, 'CLARK' ename, 'MANAGER' job UNION ALL
SELECT 7566 empno, 'JONES' ename, 'MANAGER' job
)
SELECT *
FROM emp
WHERE ename LIKE '%LA%'
![]() |
위의 쿼리는 ename 컬럼에 'LA'라는 부분 문자열이 포함된 사원만 조회하는 예제이다.
LIKE '%LA%' 조건을 사용하여, 'LA'가 이름의 어느 위치에 있든지 검색되도록 한다.
WITH emp AS (
SELECT 7698 empno, 'BLAKE' ename, 'MANAGER' job UNION ALL
SELECT 7782 empno, 'CLARK' ename, 'MANAGER' job UNION ALL
SELECT 7566 empno, 'JONES' ename, 'MANAGER' job
)
SELECT empno
, ename
, CASE WHEN ename LIKE '%LA%' THEN 'Y' ELSE 'N' END AS ename_yn
FROM emp
![]() |
위의 쿼리는 ename 컬럼에 'LA'가 포함되어 있는지를 확인하여, 해당 여부를 'Y' 또는 'N'으로 표시하는 예제이다.
LIKE 조건으로 문자열 포함 여부를 확인하고, CASE 문과 조합에 유용하게 사용된다.
[MSSQL] CHARINDEX 함수 사용법
SQL Server에서 CHARINDEX() 함수는 문자열에서 특정 문자를 찾고 위치를 반환한는 함수이다. 오라클 SQL의 INSTR 함수와는 다르게 뒤에서 부터 찾는 기능은 지원하지 않고, 문자열의 앞부터 또는 특정
gent.tistory.com
[MSSQL] PATINDEX 함수 사용법
SQL Server에서 패턴(정규식)으로 문자열의 위치를 찾을 때는 PATINDEX 함수를 사용하면 된다. 단순 문자열로 위치를 찾을 때는 CHARINDEX 함수를 사용하면 되며, 패턴으로 문자열 위치를 찾을 때는 PATIND
gent.tistory.com
[MSSQL] LIKE 연산자 사용법
SQL Server에서 특정 문자열이 포함되었는지 검색을 할 때에는 LIKE 연산자를 사용하면 된다. SQL Server에서 LIKE 연산자는 타 데이터베이스와 조금 차이가 있는데 기본 옵션이 대소문자를 구분하지 않
gent.tistory.com