다음을 통해 공유


데이터 접근자 함수 - 문자열(XQuery)

적용 대상:SQL Server

문자열로 표시되는 $arg 값을 반환합니다.

구문

  
fn:string() as xs:string  
fn:string($arg as item()?) as xs:string  

인수

$arg
노드 또는 원자 값입니다.

설명

  • $arg 빈 시퀀스인 경우 길이가 0인 문자열이 반환됩니다.

  • $arg 노드인 경우 함수는 문자열-값 접근자를 사용하여 가져온 노드의 문자열 값을 반환합니다. 이는 W3C XQuery 1.0 및 XPath 2.0 데이터 모델 사양에 정의되어 있습니다.

  • $arg 원자성 값이면 함수는 그렇지 않은 경우를 제외하고 식 캐스트에서 xs:string, $arg 반환하는 것과 동일한 문자열을 반환합니다.

  • $arg 형식xs:anyURI이면 특수 문자를 이스케이프하지 않고 URI가 문자열로 변환됩니다.

  • inthis 구현에서는 인수가 없는 fn:string() 은 컨텍스트 종속 조건자의 컨텍스트에서만 사용할 수 있습니다. 특히 대괄호([ ]) 내에서만 사용할 수 있습니다.

이 항목에서는 AdventureWorks 데이터베이스의 다양한 xml 형식 열에 저장된 XML 인스턴스에 대한 XQuery 예제를 제공합니다.

A. 문자열 함수 사용

다음 쿼리는 요소의 <Features> 자식 요소 노드를 검색합니다.<ProductDescription>

SELECT CatalogDescription.query('  
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
 /PD:ProductDescription/PD:Features  
')  
FROM Production.ProductModel  
WHERE ProductModelID=19  

다음은 부분 결과입니다.

<PD:Features xmlns:PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">  
   These are the product highlights.   
   <p1:Warranty xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">  
    <p1:WarrantyPeriod>3 years</p1:WarrantyPeriod>  
    <p1:Description>parts and labor</p1:Description>  
   </p1:Warranty>  
       ...  
</PD:Features>  

string() 함수를 지정하면 지정된 노드의 문자열 값이 수신됩니다.

SELECT CatalogDescription.query('  
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
 string(/PD:ProductDescription[1]/PD:Features[1])  
')  
FROM Production.ProductModel  
WHERE ProductModelID=19  

부분 결과입니다.

These are the product highlights.   
3 yearsparts and labor...    

B. 여러 노드에서 문자열 함수 사용

다음 예에서는 XML 인스턴스가 xml 유형의 변수에 할당됩니다. 쿼리는 다양한 노드에 string()을 적용한 결과를 설명하기 위해 지정됩니다.

declare @x xml  
set @x = '<?xml version="1.0" encoding="UTF-8" ?>  
<!--  This is a comment -->  
<root>  
  <a>10</a>  
just text  
  <b attr="x">20</b>  
</root>  
'  

다음 쿼리는 문서 노드의 문자열 값을 검색합니다. 이 값은 모든 하위 텍스트 노드의 문자열 값을 연결하여 형성됩니다.

select @x.query('string(/)')  

결과는 다음과 같습니다.

This is a comment 10  
just text  
 20  

다음 쿼리는 처리 명령 노드의 문자열 값을 검색하려고 합니다. 결과는 텍스트 노드를 포함하지 않으므로 빈 시퀀스입니다.

select @x.query('string(/processing-instruction()[1])')  

다음 쿼리는 주석 노드의 문자열 값을 검색하고 텍스트 노드를 반환합니다.

select @x.query('string(/comment()[1])')  

결과는 다음과 같습니다.

This is a comment   

참고 항목

xml 데이터 형식에 대한 XQuery 함수