算術式 (XQuery)
idiv を除くすべての算術演算子がサポートされています。次の例は、算術演算子の基本的な使用方法を示しています。
DECLARE @x xml
SET @x=''
SELECT @x.query('2 div 2')
SELECT @x.query('2 * 2')
idiv はサポートされていないため、次に示すように 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)')
算術演算子を使用した演算結果の型は入力値の型によって決まります。オペランドどうしの型が異なる場合、必要に応じて一方または両方のオペランドが、データ型階層に基づき共通のプリミティブな基本データ型にキャストされます。データ型階層の詳細については、「XQuery での型キャストの規則」を参照してください。
数値データ型の上位変換は、2 つのオペランドが異なる数値基本データ型である場合に行われます。たとえば、xs:decimal と xs:double を加算すると、まず decimal 型の値が double 型の値に変換されます。次に、結果が double 型の値となる加算処理が行われます。
型指定されていないアトミック値は、もう一方のオペランドの数値基本型にキャストされます。もう一方のオペランドも型指定されていない場合は、xs:double にキャストされます。
実装の制限事項
次に、制限事項を示します。
- 算術演算子の引数は、数値型または untypedAtomic 型にする必要があります。
- xs:integer 値に対して演算を行うと、その結果の値の型は xs:integer 型ではなく、xs:decimal になります。