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.