본문 바로가기
Database/MS-Sql Lecture

instr 함수와 같은 역활

by 현이빈이 2008. 8. 22.
반응형

CHARINDEX 및 PATINDEX 비교

CHARINDEX 및 PATINDEX 함수는 지정한 패턴의 시작 위치를 반환합니다. PATINDEX는 와일드카드 문자를 사용할 수 있지만 CHARINDEX는 사용할 수 없습니다.

이 두 가지 함수는 두 개의 매개 변수를 사용합니다.

  • 원하는 위치의 패턴. PATINDEX를 사용할 때는 패턴이 와일드카드 문자를 포함할 수 있는 리터럴 문자열이 되며 CHARINDEX를 사용하면 와일드카드 문자가 없는 리터럴이 됩니다.

  • Microsoft® SQL Server™가 지정한 패턴을 검색하는 문자열 값의 식. 보통 열 이름입니다.

예를 들어, titles 테이블에 있는 notes열의 특정 행에서 "wonderful" 패턴이 시작하는 위치를 찾습니다.

USE pubs

SELECT CHARINDEX('wonderful', notes)

FROM titles

WHERE title_id = 'TC3218'

결과 집합은 다음과 같습니다.

----------------

46

(1개 행 적용됨)

검색할 행을 제한하지 않는 경우 쿼리는 테이블의 모든 행을 반환하고 패턴을 찾은 행에 대해서는 0이 아닌 값을, 나머지 행에 대해서는 0 값을 보고합니다.

예를 들어, 와일드카드를 사용하여 Categories 테이블에 있는 Description 열의 행에서 "candies" 패턴이 시작하는 위치를 찾습니다.

USE Northwind
GO
SELECT CategoryID, PATINDEX('%candies%', Description)AS POSITION
FROM Categories
WHERE PATINDEX('%candies%', Description) <> 0

검색할 행을 제한하지 않으면 쿼리는 테이블의 모든 행을 반환하고 패턴을 찾은 행에 대해 0이 아닌 값을 보고합니다.

PATINDEX는 text 데이터 형식에서 유용합니다. 이는 IS NULL, IS NOT NULL 및 LIKE(WHERE 절의 text에서 유용한 유일한 기타 비교) 외의 WHERE 절에서 사용할 수 있습니다.

반응형