노드의 함수 - number
적용 대상: 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 함수이며 주로 이전 버전과의 호환성을 위해 포함됩니다.
LotSizeB용 XQuery는 숫자 함수를 지정하고 중복됩니다.
LotSizeD에 대한 쿼리는 산술 연산에서 숫자 값을 사용하는 방법을 보여 줍니다.
다음은 결과입니다.
ProductModelID Result
----------------------------------------------
7 <Location LocationID="10"
LotSizeA="100"
LotSizeB="100"
LotSizeC="101" />
구현 제한 사항
제한 사항은 다음과 같습니다.
number() 함수는 노드만 허용합니다. 원자 값을 사용하지 않습니다.
값을 숫자 로 반환할 수 없는 경우 number() 함수는 NaN 대신 빈 시퀀스를 반환합니다.