Aritmetiska uttryck (XQuery)
gäller för:SQL Server
Alla aritmetiska operatorer stöds, förutom idiv. Följande exempel illustrerar den grundläggande användningen av aritmetiska operatorer:
DECLARE @x xml
SET @x=''
SELECT @x.query('2 div 2')
SELECT @x.query('2 * 2')
Eftersom idiv- inte stöds är en lösning att använda xs:integer() konstruktorn:
DECLARE @x xml
SET @x=''
-- Following will not work
-- SELECT @x.query('2 idiv 2')
-- Workaround
SELECT @x.query('xs:integer(2 div 3)')
Den resulterande typen från en aritmetikoperator baseras på indatavärdenas typer. Om operanderna är olika typer kommer antingen en eller båda när det behövs att omvandlas till en vanlig primitiv bastyp enligt typhierarkin. Information om typhierarki finns i Type Casting Rules in XQuery.
Befordran av numerisk typ sker om de två åtgärderna är olika numeriska bastyper. Om du till exempel lägger till en xs:decimal till en xs:double ändrar du först decimalvärdet till en dubbel . Därefter utförs tillägget som skulle resultera i ett dubbelt värde.
Otypade atomiska värden gjuts till den andra operandens numeriska bastyp, eller för att xs:double om den andra operanden också är otypad.
Implementeringsbegränsningar
Det här är begränsningarna:
Argument för de aritmetiska operatorerna måste vara av numerisk typ eller otypedAtomic.
Åtgärder på xs:heltal värden resulterar i ett värde av typen xs:decimal i stället för xs:heltal.