substring 함수(XQuery)

$startingLoc, 값에 표시된 위치부터 시작하여 $length 값에 표시된 문자 개수까지 계속되는 $sourceString 값의 일부를 반환합니다.

구문

fn:substring($sourceString as xs:string?,
                          $startingLoc  as as xs:decimal?) as xs:string?

fn:substring($sourceString as xs:string?,
                          $startingLoc as xs:decimal?,
                          $length as xs:decimal?) as xs:string?

인수

  • $sourceString
    원본 문자열입니다.
  • $startingLoc
    원본 문자열에서 하위 문자열이 시작하는 시작 지점입니다. 이 값이 음수이거나 0이면 0보다 큰 위치에 있는 문자만 반환됩니다. 이 값이 $sourceString 길이보다 크면 길이가 0인 문자열이 반환됩니다.
  • $length
    검색할 문자 개수입니다(옵션). 이 인수를 지정하지 않으면 $startingLoc에 지정된 위치에서 문자열 끝까지 모든 문자를 반환합니다.

주의

함수에 3개의 인수를 지정하면 해당 위치 $p이 따르는 $sourceString의 문자가 반환됩니다.

fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)

$length 값은 시작 위치 이후의 $sourceString 값에 있는 문자 개수보다 클 수 있습니다. 이 경우 하위 문자열은 $sourceString 끝까지 있는 문자를 반환합니다.

문자열의 첫 번째 문자는 위치 1에 있습니다.

$sourceString 값이 빈 시퀀스인 경우 길이가 0인 문자열로 취급됩니다. 그렇지 않으면 $startingLoc 또는 $length가 빈 시퀀스인 경우 빈 시퀀스가 반환됩니다.

이 항목에서는 AdventureWorks 데이터베이스의 다양한 xml 유형 열에 저장된 XML 인스턴스에 대한 XQuery 예를 제공합니다. 이러한 각 열에 대한 개요는 AdventureWorks 데이터베이스의 xml 데이터 형식 표시를 참조하십시오.

1. substring() XQuery 함수를 사용하여 부분 요약 제품 모델 설명 검색

다음 쿼리는 제품 모델에 대해 기술하는 텍스트(문서의 <Summary> 요소)에서 처음 50개 문자를 검색합니다.

WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
    <Prod>{ substring(string((/pd:ProductDescription/pd:Summary)[1]), 1, 50) }</Prod>
 ') as Result
FROM Production.ProductModel
where CatalogDescription.exist('/pd:ProductDescription')  = 1

이전 쿼리에서 다음을 유의하십시오.

  • string() 함수는 <Summary> 요소의 문자열 값을 반환합니다. <Summary> 요소에 텍스트와 하위 요소(html 서식 지정 요소)가 모두 들어 있고, 이러한 요소를 건너뛰고 모든 텍스트를 검색할 것이기 때문에 이 함수가 사용됩니다.
  • substring() 함수는 **string()**에 의해 검색된 문자열 값에서 처음 50개 문자를 검색합니다.

다음은 결과의 일부입니다.

ProductModelID Result
-------------- ----------------------------------------------------
19      <Prod>Our top-of-the-line competition mountain bike.</Prod> 
23      <Prod>Suitable for any type of riding, on or off-roa</Prod>
...

구현 시 제한 사항

제한 사항은 다음과 같습니다.

  • SQL Server에서는 $startingLoc$length parameters의 유형이 xs:double 대신 xs:decimal이어야 합니다.
  • SQL Server에서 $startingLoc$length는 ()로 매핑되는 동적 오류의 결과로 빈 시퀀스가 가능한 값이기 때문에 빈 시퀀스일 수 있습니다.
  • 유니코드 UTF-16 서로게이트 쌍은 하나가 아닌 두 개의 문자로 계산됩니다.

참고 항목

참조

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

도움말 및 정보

SQL Server 2005 지원 받기