Bagikan melalui


Fungsi pada Simpul - angka

Berlaku untuk:SQL Server

Mengembalikan nilai numerik dari simpul yang ditunjukkan oleh $arg.

Sintaks

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

Argumen

$arg
Simpul yang nilainya akan dikembalikan sebagai angka.

Keterangan

Jika $arg tidak ditentukan, nilai numerik dari simpul konteks, dikonversi ke ganda, dikembalikan. Di SQL Server, fn:number() tanpa argumen hanya dapat digunakan dalam konteks predikat tergantung konteks. Secara khusus, ini hanya dapat digunakan di dalam tanda kurung siku ([ ]). Misalnya, ekspresi berikut mengembalikan <ROOT> elemen .

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

Jika nilai simpul bukan representasi leksikal yang valid dari jenis sederhana numerik, seperti yang didefinisikan dalam Skema XML Bagian 2:Jenis Data, Rekomendasi W3C, fungsi mengembalikan urutan kosong. NaN tidak didukung.

Contoh

Topik ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml di database AdventureWorks.

J. Menggunakan fungsi number() XQuery untuk mengambil nilai numerik atribut

Kueri berikut mengambil nilai numerik atribut ukuran lot dari lokasi pusat kerja pertama dalam proses manufaktur Model Produk 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  

Perhatikan hal berikut ini dari kueri sebelumnya:

  • Fungsi number() tidak diperlukan, seperti yang ditunjukkan oleh kueri untuk atribut LotSizeA . Ini adalah fungsi XPath 1.0 dan disertakan terutama karena alasan kompatibilitas mundur.

  • XQuery untuk LotSizeB menentukan fungsi angka dan berlebihan.

  • Kueri untuk LotSizeD mengilustrasikan penggunaan nilai angka dalam operasi aritmatika.

Ini adalah hasilnya:

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

Batasan Implementasi

Ini adalah batasannya:

  • Fungsi number() hanya menerima simpul. Ini tidak menerima nilai atomik.

  • Ketika nilai tidak dapat dikembalikan sebagai angka, fungsi number() mengembalikan urutan kosong alih-alih NaN.

Lihat Juga

Fungsi XQuery terhadap Tipe Data xml