다음을 통해 공유


number 함수(XQuery)

$arg로 표시되는 노드의 숫자 값을 반환합니다.

구문

fn:number() as xs:double? 
fn:number($arg as node()?) as xs:double?

인수

  • $arg
    값이 숫자로 반환되는 노드입니다.

주의

$arg를 지정하지 않으면 double로 변환된 컨텍스트 노드의 숫자 값이 반환됩니다. SQL Server에서 인수가 없는 **fn:number()**는 상황별 조건자 컨텍스트에서만 사용할 수 있습니다. 특히 사용 시 대괄호([])로 묶어야 합니다. 예를 들어 다음 식은 <ROOT> 요소를 반환합니다.

declare @x xml
set @x='<ROOT>111</ROOT>'
select @x.query('/ROOT[number()=111]')

노드 값이 XML Schema Part 2:Datatypes, W3C Recommendation에 정의된 대로 단순한 숫자 유형의 올바른 어휘 표현이 아닌 경우 함수가 빈 시퀀스를 반환합니다. NaN은 지원되지 않습니다.

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

1. number() XQuery 함수를 사용하여 특성의 숫자 값 검색

다음 쿼리는 제품 모델 7의 제조 과정에 있는 첫 번째 업무 센터 위치에서 부지 크기 특성의 숫자 값을 검색합니다.

SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
     for $i in (//AWMI:root//AWMI:Location)[1]
     return 
       <Location LocationID="{ ($i/@LocationID) }" 
                   LotSizeA="{  $i/@LotSize }"
                   LotSizeB="{  number($i/@LotSize) }"
                   LotSizeC="{ number($i/@LotSize) + 1 }" >
                   
       </Location>
') as Result
FROM Production.ProductModel
WHERE ProductModelID=7

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

  • LotSizeA 특성에 대한 쿼리에서처럼 number() 함수는 필요하지 않습니다. 이 함수는 XPath 1.0 함수이며 주로 이전 버전과의 호환성을 위해 사용됩니다.

  • LotSizeB에 대한 XQuery는 숫자 함수를 지정하며 중복됩니다.

  • LotSizeD에 대한 쿼리는 산술 연산에서 숫자 값의 사용 예를 보여 줍니다.

다음은 결과입니다.

ProductModelID   Result
----------------------------------------------
7              <Location LocationID="10" 
                         LotSizeA="100" 
                         LotSizeB="100" 
                         LotSizeC="101" />

구현 시 제한 사항

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

  • number() 함수는 노드만 사용하고 원자 값을 사용하지 않습니다.

  • 값을 숫자로 반환할 수 없는 경우 number() 함수는 NaN 대신 빈 시퀀스를 반환합니다.