Share via


노드의 함수 - 숫자

적용 대상:SQL Server

$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 스키마 파트 2:Datatypes, W3C Recommendation정의된 대로 노드 값이 숫자 단순 형식의 유효한 어휘 표현이 아닌 경우 함수는 빈 시퀀스를 반환합니다. NaN은 지원되지 않습니다.

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

A. 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 함수이며 주로 이전 버전과의 호환성을 위해 포함됩니다.

  • LotSizeBXQuery는 숫자 함수를 지정하고 중복됩니다.

  • LotSizeD에 대한 쿼리는 산술 연산에서 숫자 값을 사용하는 방법을 보여 줍니다.

결과는 다음과 같습니다.

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

구현 제한 사항

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

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

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

참고 항목

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