Bagikan melalui


Ekspresi Aritmatika (XQuery)

Berlaku untuk:SQL Server

Semua operator aritmatika didukung, kecuali untuk idiv. Contoh berikut mengilustrasikan penggunaan dasar operator aritmatika:

DECLARE @x xml  
SET @x=''  
SELECT @x.query('2 div 2')  
SELECT @x.query('2 * 2')  

Karena idiv tidak didukung, solusinya adalah menggunakan konstruktor xs:integer():

DECLARE @x xml  
SET @x=''  
-- Following will not work  
-- SELECT @x.query('2 idiv 2')  
-- Workaround   
SELECT @x.query('xs:integer(2 div 3)')  

Jenis yang dihasilkan dari operator aritmatika didasarkan pada jenis nilai input. Jika operand berbeda jenis, salah satu atau keduanya ketika diperlukan akan ditransmisikan ke jenis dasar primitif umum sesuai dengan hierarki jenis. Untuk informasi tentang hierarki jenis, lihat Mengetik Aturan Casting di XQuery.

Promosi jenis numerik terjadi jika kedua operasi tersebut adalah jenis dasar numerik yang berbeda. Misalnya, menambahkan xs:desimal ke xs:double akan terlebih dahulu mengubah nilai desimal menjadi ganda . Selanjutnya, penambahan akan dilakukan yang akan menghasilkan nilai ganda.

Nilai atom yang tidak diketik ditransmisikan ke jenis dasar numerik operand lainnya, atau ke xs:double jika operand lain juga tidak diketik.

Batasan Implementasi

Ini adalah batasannya:

  • Argumen untuk operator aritmatika harus berjenis numerik atau untypedAtomic.

  • Operasi pada nilai xs:integer menghasilkan nilai jenis xs:desimal alih-alih xs:integer.