XQuery
Priscilla Walmsley (pwalmsley@datypic.com)
ISBN: 1491915103
2nd edition, , O'Reilly Media, Inc.
Chapter 17: Working with Numbers
Please note that the book contains many inline examples and informal tables that are not provided here.
Example | Return value |
---|---|
number(doc("prices.xml")//prod[1]/price)
|
29.99
|
number(doc("prices.xml")//prod[1]/price/@currency)
|
NaN
|
number("29.99")
|
29.99
|
number( () )
| NaN |
Example | Return value |
---|---|
doc("prices.xml")//prod[3]/discount > 10
|
false
|
doc("prices.xml")//prod[3]/discount gt 10
| Error XPTY0004
|
doc("prices.xml")//prod[3]/discount > doc("prices.xml")//prod[1]/discount
|
true (it is comparing the string 3.99 to the string 10.00 ) |
doc("prices.xml")//prod[3]/number(discount) > doc("prices.xml")//prod[1]/number(discount)
|
false (it is comparing the number 3.99 to the number 10.00 ) |
3 gt 2
|
true
|
1 = 1.0
|
true
|
xs:float("NaN") = xs:float("NaN")
|
false
|
xs:string(xs:float("NaN")) = "NaN"
|
true
|
Example | Return value | Return type |
---|---|---|
5 + 3
|
8
|
xs:integer
|
5 + 3.0
|
8
|
xs:decimal
|
5 + 3.0E0
|
8
|
xs:double
|
5 * 3
|
15
|
xs:integer
|
2 + 3 * 5
|
17
|
xs:integer
|
(2 + 3) * 5
|
25
|
xs:integer
|
- 3 + 5
|
2
|
xs:integer
|
() + 3
|
()
| N/A |
doc("prices.xml")//prod[1]/price+5
|
34.99
|
xs:double
|
doc("prices.xml")//prod[1]/price-5
|
()
| N/A |
doc("prices.xml")//prod[1]/price - 5
|
24.99
|
xs:double
|
Example | Return value | Return type |
---|---|---|
14 div 4
|
3.5
|
xs:decimal
|
14 idiv 4
|
3
|
xs:integer
|
-14 idiv 4
|
-3
|
xs:integer
|
14.0 div 3.5
|
4.0
|
xs:decimal
|
14.0 idiv 3.5
|
4
|
xs:integer
|
() div 3
|
()
| N/A |
14 div 0
| Error FOAR0001
| N/A |
xs:float("14") div 0
|
INF
|
xs:float
|
xs:double("INF") div 2
|
INF
|
xs:double
|
xs:float("NaN") div 2
|
NaN
|
xs:float
|
Example | Return value | Return type |
---|---|---|
14 mod 4
|
2
|
xs:integer
|
-14 mod 4
|
-2
|
xs:integer
|
14 mod -4
|
2
|
xs:integer
|
14.9 mod 2.1
|
0.2
|
xs:decimal
|
14.5E1 mod 2E1
|
5
|
xs:double
|
xs:float("14") mod 0
|
NaN
|
xs:float
|
xs:double("INF") mod 2
|
NaN
|
xs:double
|
14 mod ()
|
()
| N/A |
14 mod xs:double("INF")
|
14
|
xs:double
|
Example | Return value | Purpose |
---|---|---|
format-integer(123, '0000')
|
0123
| Adding leading zeros |
format-integer(12345678, '#,##0')
|
12,345,678
| Inserting commas between groups |
format-integer(4, 'a')
|
d
| Using other numbering systems (letters, Roman numerals, etc.) |
format-integer(4, 'Ww')
|
Four
| Using words |
format-integer(15, '0;o')
|
15th
| Using ordinal numbers |
Example | Return value | Purpose |
---|---|---|
format-number(12, '0000.00')
|
0012.00
| Padding with leading and trailing zeros |
format-number(12345.6, '#,###.0')
|
12,345.6
| Inserting commas between groups |
format-number(-1, "#,##0.00;(#,##0.00)")
|
(1.00)
| Using different formats for negative numbers |
format-number(0.18, '0%')
|
18%
| Calculating percentages |
format-number(12, 'Number: 0')
|
Number: 12
| Inserting other characters before or after |