-- 온라인 설명서
CHARINDEX 및 PATINDEX 함수는 지정한 패턴의 시작 위치를 반환합니다.
PATINDEX에서는 와일드카드 문자를 사용할 수 있지만 CHARINDEX에서는 사용할 수 없습니다.
이 두 가지 함수는 2개의 매개 변수를 사용합니다.
· 원하는 위치의 패턴 - PATINDEX를 사용할 때는 와일드카드 문자를 포함할 수 있는 리터럴 문자열을 패턴으로 사용하며 CHARINDEX에서는 와일드카드 문자가 없는 리터럴 문자열을 패턴으로 사용합니다.
· 문자열 값의 식 - 일반적으로 열 이름이며 지정된 패턴을 검색하는 데 사용됩니다.
예를 들어 다음은 Document 테이블에 있는 Title 열의 특정 행에서 arm 패턴이 시작하는 위치를 찾는 코드 예입니다.
| |
USE AdventureWorks; GO SELECT CHARINDEX('arm', Title) FROM Production.Document WHERE DocumentID = '1'; GO |
결과 집합은 다음과 같습니다.
| |
---------------- 7 (1 row(s) affected) |
검색할 행을 제한하지 않은 경우 쿼리는 테이블의 모든 행을 반환하고
패턴을 찾은 행에 대해서는 0이 아닌 값을, 나머지 행에 대해서는 0 값을 보고합니다.
다음 예에서는 Document 테이블에 있는 Title 열의 특정 행에서 reflector 패턴이 시작하는 위치를 찾기 위해 와일드카드 문자를 사용하는 방법을 보여 줍니다.
| |
USE AdventureWorks; GO SELECT DocumentID, PATINDEX('%reflector%', Title)AS POSITION FROM Production.Document WHERE PATINDEX('%reflector%', Title) <> 0; GO |
결과 집합은 다음과 같습니다.
| |
DocumentID POSITION ---------- -------- 2 7 3 7 (2 row(s) affected) |
검색할 행을 제한하지 않으면
쿼리는 테이블의 모든 행을 반환하고 패턴을 찾은 행에 대해 0이 아닌 값을 보고합니다.
CHARINDEX는 text, ntext 및 image 데이터 형식과 함께 사용할 수 없습니다.
쿼리문을 짜다가 특정 구간에 대한 검색을 해야될 경우가 생겼다.
구간이다 보니 파라미터를 두개로 받자니 애매하고
하나로 받아서 처리할려다 보니
20~30 과 같이 물결 무늬를 넣어 넘기기로 정의했다.
이를 프로시저에서 받아 물결무늬를 기점으로 앞뒤를 잘라 사용하는것이다.
이때 유용한 함수가 CHARINDEX () 함수 이다.
사용예는 다음과 같다.
비교컬럼 >= LEFT(''' + @파라미터값 + ''', CHARINDEX(''~'', ''' + @파라미터값 + ''') - 1)
AND 비교컬럼 <= RIGHT(''' + @파라미터값 + ''', CHARINDEX(''~'', REVERSE(''' + @파라미터값 + ''')) - 1)
위와 같이 하면 하나의 '20~30' 이라는 파라미터값으로
그 구간을 검색할수 있다
지금 짜는 프로시저에 많이 쓰였넹...
'DATABASE' 카테고리의 다른 글
소수점 자르기에 유용한 STR() 함수 (0) | 2010.03.26 |
---|---|
날짜간격 알아내기에 유용한 DATEDIFF() 함수 (0) | 2010.02.09 |
절대값 양수 반환에 쓰이는 MSSQL ABS() 함수 (0) | 2010.01.15 |
MSSQL 자동증가(IDENTITY) 다시 세팅 (0) | 2010.01.06 |
가로쓰기에 유용한 COALESCE() 함수 (0) | 2009.12.14 |