PATINDEX(Transact-SQL)

유효한 모든 text 및 character 데이터 형식으로 지정한 식에서 패턴이 처음 나타나는 시작 위치를 반환하거나 패턴을 찾지 못하면 0을 반환합니다. 자세한 내용은 검색 조건의 패턴 일치를 참조하십시오.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

PATINDEX ( '%pattern%' , expression )

인수

  • 'pattern'
    찾을 시퀀스가 포함된 문자 식 입니다. 와일드카드 문자를 사용할 수 있습니다. 그러나 % 문자가 앞에 오고 그 다음에 pattern이 와야 합니다. 단, 첫 문자 또는 마지막 문자를 검색하는 경우는 예외입니다.

  • expression
    일반적으로 지정된 패턴이 검색되는 열을 나타내는 입니다. expression은 문자열 데이터 형식 범주입니다.

반환 형식

expression이 varchar(max) 또는 nvarchar(max) 데이터 형식인 경우 bigint이며 그 외의 경우에는 int입니다.

주의

pattern 또는 expression이 NULL이면 PATINDEX는 NULL을 반환합니다.

PATINDEX는 입력 데이터 정렬에 따라 비교를 수행합니다. 지정된 데이터 정렬에서 비교를 수행하려면 COLLATE를 사용하여 입력에 명시적 데이터 정렬을 적용할 수 있습니다.

0x0000(char(0))은 Windows 데이터 정렬에서 정의되지 않은 문자이고 PATINDEX에 포함될 수 없습니다.

1. PATINDEX와 함께 패턴 사용

다음 예에서는 Document 테이블에 있는 DocumentSummary 열의 특정 행에서 ensure 패턴이 시작하는 위치를 찾습니다.

USE AdventureWorks2008R2;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO

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

-----------

64

(1 row(s) affected)

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

2. PATINDEX와 함께 와일드카드 문자 사용

다음 예에서는 와일드카드 문자를 사용하여 Document 테이블에 있는 DocumentSummary 열의 특정 행에서 en_ure 패턴이 시작하는 위치를 찾습니다. 여기서 밑줄은 문자를 나타내는 와일드카드입니다.

USE AdventureWorks2008R2;
GO
SELECT PATINDEX('%en_ure%', DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO

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

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

64

(1 row(s) affected)

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

3. PATINDEX와 함께 COLLATE 사용

다음 예에서는 COLLATE 함수를 사용하여 검색된 식의 데이터 정렬을 명시적으로 지정합니다.

USE tempdb;
GO
SELECT PATINDEX ( '%ein%', 'Das ist ein Test'  COLLATE Latin1_General_BIN) ;
GO

4. 변수를 사용하여 패턴 지정

다음 예에서는 변수를 사용하여 값을 pattern 매개 변수로 전달합니다.

USE AdventureWorks2008R2; 
GO
DECLARE @MyValue varchar(10) = 'safety'; 

SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary) 
FROM Production.Document
WHERE DocumentNode = 0x7B40;

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

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

22