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 대신 빈 시퀀스를 반환합니다.