数値関数¶
数値関数は、型が 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 |