문자열 값 함수 - contains
적용 대상:SQL Server
$arg 1 값에 $arg 2로 지정된 문자열 값이 포함되어 있는지 여부를 나타내는 xs:boolean 형식의 값을 반환합니다.
구문
fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?
인수
$arg 1
테스트할 문자열 값입니다.
$arg 2
찾을 부분 문자열입니다.
설명
$arg 2 값이 길이가 0인 문자열이면 함수는 True를 반환합니다. $arg 1 값이 길이가 0인 문자열이고 $arg 2 값이 길이가 0인 문자열이 아니면 함수는 False를 반환합니다.
$arg 1 또는 $arg 2 값이 빈 시퀀스이면 인수는 길이가 0인 문자열로 처리됩니다.
contains() 함수는 문자열 비교에 XQuery의 기본 유니코드 코드 포인트 데이터 정렬을 사용합니다.
$arg 2에 지정된 부분 문자열 값은 4000자보다 작거나 같아야 합니다. 지정된 값이 4000자보다 크면 동적 오류 조건이 발생하고 contains() 함수가 True 또는 False의 부울 값 대신 빈 시퀀스를 반환합니다. SQL Server는 XQuery 식에서 동적 오류를 발생시키지 않습니다.
대/소문자를 구분하지 않는 비교를 얻기 위해 대 문자 또는 소문자 함수를 사용할 수 있습니다.
보조 문자(서로게이트 쌍)
XQuery 함수에서 서로게이트 쌍의 동작은 데이터베이스 호환성 수준 및 경우에 따라 함수의 기본 네임스페이스 URI에 따라 달라집니다. 자세한 내용은 SQL Server 2016의 데이터베이스 엔진 기능 주요 변경 내용 항목에서 "XQuery 함수는 서로게이트 인식" 섹션을 참조하세요. ALTER DATABASE 호환성 수준(Transact-SQL) 및 데이터 정렬 및 유니코드 지원도 참조하세요.
예
이 항목에서는 AdventureWorks 데이터베이스의 다양한 xml 형식 열에 저장된 XML 인스턴스에 대한 XQuery 예제를 제공합니다.
A. contains() XQuery 함수를 사용하여 특정 문자열 검색
다음 쿼리는 요약 설명에서 Aerodynamic이라는 단어가 포함된 제품을 찾습니다. 쿼리는 ProductID 및 <Summary
> 이러한 제품에 대한 요소를 반환합니다.
--The product model description document uses
--namespaces. The WHERE clause uses the exit()
--method of the xml data type. Inside the exit method,
--the XQuery contains() function is used to
--determine whether the <Summary> text contains the word
--Aerodynamic.
USE AdventureWorks2022;
GO
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.exist('
/pd:ProductDescription/pd:Summary//text()
[contains(., "Aerodynamic")]') = 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>