contains 함수(XQuery)
$arg1 값에 $arg2로 지정된 문자열 값이 포함되었는지 여부를 나타내는 xs:boolean 유형의 값을 반환합니다.
구문
fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?
인수
- $arg1
테스트할 문자열 값입니다.
- $arg2
검색할 하위 문자열입니다.
주의
$arg2 값이 길이가 0인 문자열인 경우 함수는 True를 반환합니다. $arg1 값이 길이가 0인 문자열이고 $arg2 값이 길이가 0이 아닌 문자열이면 함수가 False를 반환합니다.
$arg1 또는 $arg2 값이 빈 시퀀스인 경우 인수는 길이가 0인 문자열로 취급됩니다.
contains() 함수는 문자열 비교에 대해 XQuery의 기본 유니코드 코드 포인트 데이터 정렬을 사용합니다.
$arg2에 대해 지정된 하위 문자열 값은 4000자보다 작거나 같아야 합니다. 지정된 값이 4000자보다 큰 경우 동적 오류 조건이 발생하고 contains() 함수는 True 또는 False의 부울 값 대신 빈 시퀀스를 반환합니다. SQL Server 2005 는 XQuery 식에서 동적 오류를 발생시키지 않습니다.
예
이 항목에서는 AdventureWorks 데이터베이스의 다양한 xml 유형 열에 저장된 XML 인스턴스에 대한 XQuery 예를 제공합니다. 이러한 각 열에 대한 개요는 AdventureWorks 데이터베이스의 xml 데이터 형식 표시를 참조하십시오.
1. contains() XQuery 함수를 사용하여 특정 문자열 검색
다음 쿼리는 요약 설명에 Aerodynamic이라는 단어가 포함된 제품을 검색합니다. 이 쿼리는 이러한 제품에 대한 ProductID와 <Summary
> 요소를 반환합니다.
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
<Prod>
{ /pd:ProductDescription/@ProductModelID }
{ /pd:ProductDescription/pd:Summary }
</Prod>
') as Result
FROM Production.ProductModel
where CatalogDescription.value('
contains( (/pd:ProductDescription/pd:Summary//*/text())[1],
"Aerodynamic")','bit') = 1
이전 쿼리에서 다음을 유의하십시오.
- 제품 모델 설명 문서에서는 네임스페이스가 사용됩니다. 따라서 namespace 키워드는 XQuery 프롤로그에 있는 네임스페이스 접두사를 정의합니다.
- WHERE 절에서는 xml 데이터 형식의 value() 메서드가 사용됩니다. 값 메서드 내에서 XQuery contains() 함수를 사용하여 <
Summary
> 텍스트에 Aerodynamic이라는 단어가 포함되었는지 여부를 확인합니다. contain() 함수에 의해 반환된 부울 값은 bit로 변환됩니다 . 그런 다음 이 값은 1과 비교됩니다.
다음은 결과입니다.
ProductModelID Result
-------------- ---------
28 <Prod ProductModelID="28">
<pd:Summary xmlns:pd=
"https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
<p1:p xmlns:p1="http://www.w3.org/1999/xhtml">
A TRUE multi-sport bike that offers streamlined riding and
a revolutionary design. Aerodynamic design lets you ride with
the pros, and the gearing will conquer hilly roads.</p1:p>
</pd:Summary>
</Prod>