数値関数¶
数値関数は、型が decimal 、 int 、 long 、 float 、および double の値に適用されます。
一般に、関数が異なる型の数値引数を受け取った場合、結果の型は最も汎用的な型になります。たとえば、 int 値と double 値を加算すると double 値が返されます。
次の関数が数値関数です。
ABS¶
説明
ABS 関数は、数値の絶対値を返します。
構文
ABS( <value:numeric> ):numeric
value: 必須。絶対値を計算する数値。
例
SELECT ABS(-5) as absolute_value
FROM Dual()
absolute_value |
|---|
5 |
ACOS¶
説明
ACOS 関数は、角度のアークコサインを返します。
入力は、 -1.0 と +1.0 の間の数値でなければなりません。
構文
ACOS( <value:numeric> ):double
value: 必須。decimal型の値にすることはできません。
例
SELECT ACOS(0), ACOS(-1), ACOS(1)
acos |
acos_1 |
acos_2 |
|---|---|---|
1.57 |
3.14 |
0.0 |
ASIN¶
説明
ASIN 関数は、角度のアークサインを返します。
入力は、 -1.0 と +1.0 の間の数値でなければなりません。
構文
ASIN( <value:numeric> ):double
value: 必須。decimal型の値にすることはできません。
例
SELECT ASIN(0), ASIN(1), ASIN(-1)
asin |
asin_1 |
asin_2 |
|---|---|---|
0.0 |
1.57 |
-1.57 |
ATAN¶
説明
ATAN 関数は、角度のアークタンジェントを返します。
入力は、 -1.0 と +1.0 の間の数値でなければなりません。
構文
ATAN( <value:numeric> ):double
value: 必須。decimal型の値にすることはできません。
例
SELECT RADIANS(90), ATAN(RADIANS(-90)), ATAN(RADIANS(90))
radians |
atan |
atan_1 |
|---|---|---|
1.57 |
-1.0 |
1.0 |
注釈
関数 RADIANS は、度単位の角度をラジアン単位に変換します。この関数の詳細については、「 RADIANS 」を参照してください。
ATAN2¶
説明
ATAN2 関数は、直交座標 (x, y) を極座標 (r, theta) に変換します。 -pi ~ +pi の範囲内で y/x のアークタンジェントを計算することで、位相シータを計算します。
構文
ATAN2( <x:numeric>, <y:numeric>):double
x: 必須。y: 必須。
x または y のどちらも decimal 型の値にすることはできません。
CEIL¶
説明
CEIL 関数は、引数以上の最小の整数を返します。
構文
CEIL( <value:decimal> ):long
CEIL( <value:int> ):int
CEIL( <value:long> ):long
value: 必須。四捨五入する値。
例
SELECT CEIL(5.08) as ceil_value
FROM Dual()
ceil_value |
|---|
6 |
COS¶
説明
COS 関数は、ラジアン単位の角度のコサインを返します。
出力は、 -1.0 と +1.0 の間の double 値となります。
構文
COS( <angle:numeric> ):double
angle: 必須。decimal型の値にすることはできません。
例
SELECT COS(0), COS(RADIANS(180))
cos |
cos_1 |
|---|---|
1.0 |
-1.0 |
COT¶
説明
COT 関数は、ラジアン単位の角度のコタンジェントを返します。
構文
COT( <angle:numeric> ):double
angle: 必須。
例
SELECT COT( RADIANS (45))
cot |
|---|
1.0 |
DEGREES¶
説明
DEGREES 関数は、ラジアン単位の角度が与えられると、対応する度単位の角度を返します。
構文
DEGREES( <angle:numeric> ):double
angle: 必須。decimal型の値にすることはできません。
例
SELECT DEGREES(0), DEGREES(3.15 * 2)
degrees |
degrees_1 |
|---|---|
0.0 |
360.96 |
DIV¶
説明
DIV 関数は、2 つの数値を除算します。
構文
DIV( <dividend:numeric>, <divisor:numeric> ):numeric
dividend: 必須。演算の被除数。divisor: 必須。演算の除数。
例
例 1
SELECT DIV(10, 2.5) as div_value
FROM Dual();
div_value |
|---|
4.0 |
例 2
SELECT (10 / CAST('double', 2)) as div_value
FROM Dual();
div_value |
|---|
5.0 |
EXP¶
説明
EXP 関数は、数値の指数値を返します。
構文
EXP( <value:numeric> ):double
value: 必須。
例
SELECT EXP(0), EXP(1)
exp |
exp_1 |
|---|---|
1.0 |
2.72 |
FLOOR¶
説明
FLOOR 関数は、引数以下の最大の整数を返します。
構文
FLOOR( <value:decimal> ):long
FLOOR( <value:int> ):int
FLOOR( <value:long> ):long
value: 必須。四捨五入する値。
例
SELECT FLOOR(5.98) as floor_value
FROM Dual();
floor_value |
|---|
5 |
LN¶
説明
LN 関数は、値の自然対数 (底 e) を返します。
構文
LN( <value:numeric> ):double
value: 必須。decimal型の値にすることはできません。
例
SELECT LN( EXP( 0 ) ), LN ( EXP(1) )
FROM Dual();
ln |
ln_1 |
|---|---|
0.0 |
1.0 |
LOG¶
説明
LOG 関数は、数値の対数を返します。
構文
LOG( <value:numeric> [, <base:numeric> ]):double
value: 必須。対数を求める正の実数。decimal型の値にすることはできません。base: オプション。指定されていない場合、この関数は底が 10 の数値の対数を返します。
例
SELECT log(100), log(100, 10);
FROM Dual();
log |
log_1 |
|---|---|
2.0 |
2.0 |
MAX¶
説明
MAX 関数は、引数リスト内の最大値を返します。引数のいずれかが NULL の場合は、NULL を返します。
構文
MAX( <value 1:numeric>, <value 2:numeric> [, <value N:numeric> ]* ):numeric
value 1: 必須。value 2: 必須。value N: オプション。1 つ以上の値。
例
SELECT MAX(5, 10, 3.2) as max_value
FROM Dual();
max_value |
|---|
10.0 |
注釈
以前のバージョンの Denodo では、この関数は、すべての引数が NULL の場合にのみ NULL を返していました。以前のバージョンの動作に戻すには、VQL シェルから次のコマンドを実行します。
SET 'com.denodo.vdb.catalog.view.functions.max_min.ignoreNullValuesForComparisons'='true';
この変更は即座に適用されます。再起動する必要はありません。
MIN¶
説明
MIN 関数は、引数リスト内の最小値を返します。引数のいずれかが NULL の場合は、NULL を返します。
構文
MIN( <value 1:numeric> [, <value N:numeric> ]* ):numeric
value 1: 必須。value N: オプション。1 つ以上の値。
例
SELECT MIN(5, 10, 3.2) as min_value
FROM Dual();
min_value |
|---|
3.2 |
注釈
以前のバージョンの Denodo では、関数 MIN は、すべての引数が NULL の場合にのみ NULL を返していました。この動作に戻すには、次のコマンドを実行できます。
SET 'com.denodo.vdb.catalog.view.functions.max_min.ignoreNullValuesForComparisons'='true'
MOD¶
説明
MOD 関数は、剰余演算の結果、つまり、最初の引数と 2 番目の引数の整数除算の余りを返します。
この関数には挿入バージョンがあり、その演算子は % です。
構文
MOD( <dividend:decimal>, <divisor:decimal> ):decimal
MOD( <dividend:double>, <divisor:double> ):double
MOD( <dividend:float>, <divisor:float> ):double
MOD( <dividend:int>, <divisor:int> ):int
MOD( <dividend:long>, <divisor:int> ):int
MOD( <dividend:long>, <divisor:long> ):long
dividend: 必須。divisor: 必須。
例
次のビュー V について考えてみます。
int_sample |
long_sample |
|---|---|
1 |
10 |
-4 |
-55 |
8 |
70 |
さらに、次のコマンドで作成されたビュー modView があるとします。
CREATE VIEW mod_view AS
SELECT int_sample
, MOD(int_sample, 2) AS s1
, long_sample
, MOD(long_sample, 2) as s2
FROM V;
SELECT *
FROM mod_view
int_sample |
s1 |
long_sample |
s2 |
|---|---|---|---|
1 |
1 |
10 |
0 |
-4 |
0 |
-55 |
-1 |
8 |
0 |
70 |
0 |
例 2
SELECT 10%2
FROM mod_view
mod |
|---|
0 |
0 |
0 |
MULT¶
説明
MULT 関数は、引数を乗算します。
構文
MULT ( <value 1:numeric>, <value 2:numeric> [, <value N:numeric> ]* ):numeric
value 1: 必須。乗算する最初の数値。value 2: 必須。乗算する 2 番目の数値。value N: オプション。乗算する 1 つ以上の引数。
例
例 1
SELECT MULT(10, 2.5) as mult_value
FROM Dual();
mult_value |
|---|
25.0 |
例 2
SELECT (10 * 2.5) as mult_value
FROM Dual();
mult_value |
|---|
25.0 |
PI¶
説明
PI 関数は、精度 double の Pi 値を返します。
構文
PI():double
例
SELECT PI() as pi_constant
FROM Dual();
pi_constant |
|---|
3.141592653589793 |
POWER¶
説明
POWER 関数は、数値を累乗した結果を返します。
構文
POWER( <base:numeric>, <exponent:double> ):double
base: 必須。底。exponent: 必須。底を累乗する指数。
以下の点に留意してください。
「exponent」が
integer型の値である場合、「base」をdecimal型の値にすることができます。「base」と「exponent」の両方または一方が null の場合、null を返します。
「base」が 0 で、「exponent」が負の場合、「infinity」を返します。
「base」と「exponent」が 0 の場合、1 を返します。
「base」が 0 で、「exponent」が正の場合、0 を返します。
「base」が負の場合:
「exponent」が偶数の場合、「base」の絶対値を「exponent」で累乗した値を返します。
「exponent」が奇数の場合、「base」の絶対値を「exponent」で累乗した結果を負にした値を返します。
「exponent」が非整数の場合、「NaN」を返します。
例
SELECT POWER(5, 2) as power_value
FROM Dual();
power_value |
|---|
25 |
RADIANS¶
説明
RADIANS 関数は、特定の度単位の角度が与えられると、対応するラジアン単位の角度を返します。
構文
RADIANS( <angle:numeric> ):double
angle: 必須。decimal型の値にすることはできません。
例
SELECT RADIANS(0), RADIANS(360)
radians |
radians_1 |
|---|---|
0.0 |
6.28 |
RAND¶
説明
RAND 関数は、0 と 1 の間のランダムな値を返します。
構文
パラメータは受け取りません。
例
ビュー V について考えてみます。
int_sample |
|---|
1 |
-4 |
8 |
SELECT int_sample, int_sample * RAND() AS random
FROM V
int_sample |
random |
|---|---|
-4 |
-3.551409143605859 |
1 |
0.6443357973998833 |
8 |
1.5061178485934867 |
ROUND¶
説明
ROUND 関数は、小数位の右または左の指定桁数に四捨五入した数値を返します。
構文
ROUND( <value:numeric [, n : integer ] ):numeric
value: 必須。四捨五入する値。n: オプション。
n を省略すると、 value は第 0 位で四捨五入されます。引数が int 型の場合は、 int 値を返します。引数の型が long 、 float 、または double の場合は、 long 値を返します。
n が負の数である場合、 value は小数点の左の桁数に四捨五入されます。この場合、関数は value パラメータと同じ型の値を返します。つまり、 value の型が int の場合は int 値を返し、 float の場合は float 値を返します。
例
SELECT ROUND(5.98), ROUND(7.08733, 2), ROUND(315.28, -2)
FROM Dual();
round |
round_1 |
round_2 |
|---|---|---|
6 |
7.09 |
300.0 |
SIGN¶
説明
SIGN 関数は、値が負、ゼロ、または正かに応じてそれぞれ、 -1 、 0 、または 1 を返します。この関数を使用すると、数値の符号がわかります。
構文
SIGN( <value:numeric> ):int
value: 必須。NULLの場合、この関数はNULLを返します。
例
SELECT SIGN(100), SIGN(-50)
sign |
sign_1 |
|---|---|
1 |
-1 |
SIN¶
説明
SIN 関数は、ラジアン単位の角度のサインを返します。
出力は、 -1.0 と +1.0 の間の double 値となります。
構文
SIN( <angle:numeric> ):double
angle: 必須。decimal型の値にすることはできません。
例
SELECT SIN(0), SIN(RADIANS(90))
sin |
sin_1 |
|---|---|
0.0 |
1.0 |
SQRT¶
説明
SQRT 関数は、正の平方根を返します。
構文
SQRT( <value:numeric> ):double
value: 必須。平方根を求める数値。decimal型の値にすることはできません。
例
SELECT SQRT(25) as sqrt_value
FROM Dual();
sqrt_value |
|---|
5.0 |
SUBTRACT¶
説明
SUBTRACT 関数は、2 つの数値または 2 つの日時型の値を減算します。
型が localdate 、 timestamp 、 timestamptz 、または date である 2 つの値を減算すると、2 番目の日付と最初の日付の間の日数が得られます。どちらの日付も同じ日に属する場合は、時刻が異なっていても、この関数は 0 を返します。 time 型の 2 つの値を減算すると、2 つの値の間のミリ秒数を返します。
この関数には、中置記法もあります。つまり、 subtract(a, b) は a - b と同じです。
構文
SUBTRACT( <value 1:numeric>, <value 2:numeric> ):numeric
SUBTRACT( <value 1:localdate>, <value 2:localdate> ):long
SUBTRACT( <value 1:timestamp>, <value 2:timestamp> ):long
SUBTRACT( <value 1:timestamptz>, <value 2:timestamptz> ):long
SUBTRACT( <value 1:time>, <value 2:time> ):long
SUBTRACT( <value 1:date>, <value 2:date> ):long
value 1: 必須。減算元の最初の値。value 2: 必須。減算する 2 番目の値。
例
例 1
SELECT SUBTRACT(10, 2.5) as subtract_value
FROM Dual();
subtract_value |
|---|
7.5 |
例 2
SELECT (10 - CAST('int', 2.5)) as subtract_value
FROM Dual();
subtract_value |
|---|
8 |
例 3
SELECT
SUBTRACT (
DATE '2015-01-02'
, DATE '2015-01-01') as value_1
, SUBTRACT (
TIMESTAMP '2015-01-01 01:00'
, TIMESTAMP '2015-01-01 08:00') as value_2
value_1 |
value_2 |
|---|---|
1 |
0 |
SUM¶
説明
SUM 関数は、引数を加算します。
構文
SUM( <value1:numeric, value2:numeric [, valueN:numeric ]* ):numeric
value1: 必須。加算する最初の数値。value2: 必須。加算する 2 番目の数値。valueN: オプション。加算する 1 つ以上の引数。
例
例 1
SELECT SUM(1, CAST('double', 2.5), 4.6) as sum_value
FROM Dual();
sum_value |
|---|
8.1 |
例 2
SELECT (1 + CAST('int', 2.9) + 4.6) as sum_value
FROM Dual();
sum_value |
|---|
7.6 |
TAN¶
TAN 関数は、ラジアン単位の角度のタンジェントを返します。
構文
TAN ( <angle:numeric> ):double
angle: 必須。
例
SELECT TAN(0), TAN(radians(45))
tan |
tan_1 |
|---|---|
0.0 |
1.0 |
TRUNC¶
TRUNC 関数は、数値の整数部を返します。
構文
TRUNC( <value:numeric> ):long
value: 必須。
例
SELECT TRUNC(1), TRUNC(2.8), TRUNC(-3.9)
trunc |
trunc_1 |
trunc_2 |
|---|---|---|
1 |
2 |
-3 |
