すべてのプロダクト
Search
ドキュメントセンター

PolarDB:数学関数と演算子

最終更新日:May 31, 2024

このトピックでは、PolarDB for Oracleでサポートされている数学関数と演算子について説明します。

数学演算子は、多くのOracleタイプに提供されます。 日付型や時刻型などの標準的な数学的規則のない型の場合、これらの型の実際の動作については後続のセクションで説明します。

次の表に、標準の数値型で使用できる数学演算子を示します。 特に指定のない限り、numeric_typeを受け入れると示される演算子は、smallintintegerbigintnumericreal、およびdouble precision型で使用できます。 integral_typeを受け入れると示される演算子は、smallint型、integer型、およびbigint型で使用できます。 注記がない限り、演算子の各形式は、その引数と同じデータ型を返します。 integer + numericなどの複数の引数データ型を含む呼び出しは、これらのリストの後半に表示される型を使用して解決されます。

数学演算子

numeric_type + numeric_typenumeric_type

加算

2 + 35

+ numeric_typenumeric_type

Unary plus (操作なし)

+ 3.53.5

numeric_type-numeric_typenumeric_type

減算

2 - 3-1

-numeric_typenumeric_type

否定

- (-4) 4

numeric_type * numeric_typenumeric_type

乗算

2*3 6

numeric_type /numeric_typenumeric_type

除算 (整数型の場合、除算は結果をゼロに切り捨てる)

5.0 / 22.5000000000000000

5 / 2 2

(-5) / 2-2

numeric_type % numeric_typenumeric_type

モジュロ (剰余); smallintintegerbigint、およびnumericで利用可能

5% 41

numeric ^ numericnumeric

double precision ^ double precisiondouble precision

指数化 (典型的な数学的実践とは異なり、^ の複数の使用はデフォルトで左から右に関連付けます)

2 ^ 3 8

5122 ^ 3

|/ double precisiondouble precision

スクエアルート

5 |/ 25.0

| |/ double precisiondouble precision

キューブルート

| |/ 64.0 4

bigint!数値

Factorial (廃止され、factorial() に置き換えられました)

5!120

!! bigint数値

プレフィックス演算子として使用されるFactorial (廃止され、factorial() に置き換えられます)

!! 5 120

@ numeric_typenumeric_type

絶対値

@ -5.0 5

integral_type & integral_typeintegral_type

ビット単位で

91 & 15 11

integral_type | integral_typeintegral_type

ビット単位または

32 | 3 35

integral_type# integral_typeintegral_type

ビット単位の排他的OR

17 # 5 20

~ integral_typeintegral_type

ビット単位ではない

~ 1-2

integral_type < integralintegral_type

ビット単位の左シフト

1 << 4 16

integral_type > integralintegral_type

ビット単位の右シフト

8 >> 2 2

次の表に、利用可能な数学関数を示します。 これらの関数の多くは、異なる引数型を持つ複数の形式で提供されます。 指定されている場合を除き、任意の形式の関数は引数と同じデータ型を返します。 クロスタイプのケースは、演算子について上で説明したのと同じ方法で解決されます。 倍精度のデータを扱う関数は、ほとんどがホストシステムのCライブラリの上部に実装されています。 したがって、境界の場合の精度と動作は、ホストシステムによって異なります。

数学関数

abs (numeric_type) → numeric_type

絶対値

17.4abs(-17.4)

cbrt (double precision) → double precision

キューブルート

cbrt(64.0) 4

ceil (numeric) → numeric

ceil (double precision) → double precision

引数以上の最も近い整数

ceil(42.2) 43

ceil(-42.8)-42

天井 (numeric) → numeric

天井 (ダブル精度) → ダブル精度

引数以上の最も近い整数 (cellと同じ)

天井 (95.3) 96

degrees (double precision) → double precision

ラジアンを度に変換する

度 (0.5)28.64788975654116

div (y numeric, x numeric) → numeric

y /xの整数商 (ゼロに向かって切り捨て)

div(9,4) 2

exp (numeric) → numeric

exp (double precision) → double precision

指数 (e与えられた力に引き上げられた)

2.7182818284590452exp(1.0)

factorial (bigint) → numeric

ファクトリアル

階乗 (5) 120

フロア (numeric) → numeric

フロア (ダブル精度) → ダブル精度

引数以下の最も近い整数

42フロア (42.8)

フロア (-42.8)-43

gcd (numeric_type, numeric_type) → numeric_type

最大の公約数 (両方の入力を剰余なしで除算する最大の正の数) 。 この関数は、両方の入力がゼロの場合に0を返します。 この関数は、integerbigint、およびnumericで使用できます。

gcd(1071, 462) 21

lcm (numeric_type, numeric_type) → numeric_type

最小公倍数 (両方の入力の整数倍である最小の厳密に正の数) 。 この関数は、いずれかの入力がゼロの場合に0を返します。 この関数は、integerbigint、およびnumericで使用できます。

lcm(1071、462) 23562

ln (numeric) → numeric

ln (double precision) → double precision

自然対数

ln(2.0)0.6931471805599453

ログ (numeric) → numeric

log (double precision) → double precision

ベース10対数

ログ (100) 2

log10 (numeric) → numeric

log10 (double precision) → double precision

基底10対数 (logと同じ)

log10(1000) 3

ログ (b numeric, x numeric) → numeric

xの基数bへの対数

ログ (2.0、64.0)6.0000000000

min_scale (numeric) → integer

指定された値を正確に表すために必要な最小スケール (小数点以下の桁数)

min_scale(8.4100)2

mod (y numeric_type, x numeric_type) → numeric_type

y /xの残り。smallintintegerbigint、およびnumericで使用できます。

mod(9,4) 1

pi ( ) → double precision

π の近似値

pi()3.141592653589793

power (a numeric, b numeric) → numeric

power (a double precisionb double precision) → double precision

bの力に上げられたb

729パワー (9, 3)

ラジアン (double precision) → double precision

度をラジアンに変換する

ラジアン (45.0)0.7853981633974483

round (numeric) → numeric

ラウンド (ダブル精度) → ダブル精度

最も近い整数に丸める

ラウンド (42.4) 42

round (v numeric, s integer) → numeric

vからsまでの小数点以下

ラウンド (42.4382, 2)42.44

scale (numeric) → integer

引数のスケール (小数部の10進数)

4スケール (8.4100)

sign (numeric) → numeric

sign (double precision) → double precision

引数の符号 (-1、0、または + 1)

sign(-8.4)-1

sqrt (numeric) → numeric

sqrt (double precision) → double precision

スクエアルート

sqrt(2)1.4142135623730951

trim_scale (numeric) → numeric

末尾のゼロを削除して、引数のスケール (小数点以下の桁数) を小さくします。

trim_scale(8.4100)8.41

trunc (numeric) → numeric

trunc (double precision) → double precision

整数に切り捨てる (ゼロに向かって)

trunc(42.8) 42

trunc(-42.8)-42

trunc (v numeric, s integer) → numeric

vを小数点以下s位に切り捨てる

trunc(42.4382, 2)42.43

width_bucket (operand numeric, low numeric, high numeric, count integer) → integer

width_bucket (operand double precision, low double precision, high double precision, count integer) → integer

からまでの範囲に及ぶ等幅バケットのカウント数を持つヒストグラムにオペランドが含まれるバケットの数を返します。 0またはcount + 1は、その範囲外の入力に対して返されます。

width_bucket(5.35, 0.024, 10.06, 5) 3

width_bucket (operand anyelement, threshold anyarray) → integer

バケットの下限をリストする指定された配列にオペランドが含まれるバケットの番号を返します。 0は、最初の下限値未満の入力に対して返されます。 オペランドおよび配列要素は、標準の比較演算子を有する任意のタイプであり得る。 threshold配列の要素は、最初に最小の値でソートする必要があります。 そうでなければ、予期しない結果が返される。

width_bucket(now(), array['yesterday', 'today', 'tomorrow']::timestamptz[])2

次の表に、乱数の生成に使用される関数を示します。

ランダム関数

random ( ) → double precision

0.0以上1.0未満のランダムな値を返します。

random()0.897124072839091

setseed (double precision) → void

random() 関数の後続の呼び出しのシード値を設定します。 引数は、境界値を含めて-1.0から1.0の範囲内になければなりません。

setseed(0.12345)

random() 関数は、単純な線形共役アルゴリズムを使用します。 高速ですが、暗号化アプリケーションには適していません。 より安全な代替手段の詳細については、pgcryptoモジュールをご参照ください。 setseed() 関数が呼び出された場合、現在のセッション内のrandom() 関数に対する一連の後続の呼び出しに対して返された結果は、同じ引数でsetseed() を再発行することによって複製できます。

次の表に、使用可能な三角関数を示します。 これらの関数にはそれぞれ2つのバリエーションがあります。 1つのバリエーションは角度をラジアンで測定し、もう1つは角度を度で測定します。

三角関数

acos (ダブル精度) → ダブル精度

逆コサイン、ラジアンの結果

acos (1) 0

acosd (ダブル精度) → ダブル精度

逆コサイン、結果は度

acosd(0.5) 60

asin (ダブル精度) → ダブル精度

逆正弦、ラジアンの結果

asin(1)1.5707963267948966

asind (ダブル精度) → ダブル精度

逆正弦、度で結果

asind(0.5) 30

atan (ダブル精度) → ダブル精度

逆タンジェント、結果はラジアン

atan(1)0.7853981633974483

atand (ダブル精度) → ダブル精度

逆タンジェント、結果は度

atand (1) 45

atan2 (y double precision, x double precision) → double precision

y /xの逆正接、ラジアンの結果

1.5707963267948966 atan2(1,0)

atan2d (y double precision, x double precision) → double precision

y /xの逆タンジェント、結果は度

atan2d(1,0) 90

cos (ダブル精度) → ダブル精度

コサイン、ラジアンの引数

cos(0)1

cosd (ダブル精度) → ダブル精度

コサイン、度の引数

cosd(60)0.5

ベビーベッド (double precision) → double precision

Cotangent、ラジアンでの議論

1.830487721712452ベビーベッド (0.5)

cotd (double precision) → double precision

コタンジェント、度での議論

cotd (45) 1

sin (double precision) → double precision

Sine、ラジアンの引数

sin(1)0.8414709848078965

sind (double precision) → double precision

Sine、度での引数

sind(30)0.5

tan (ダブル精度) → ダブル精度

タンジェント、ラジアンの引数

tan(1)1.5574077246549023

tand (double precision) → double precision

タンジェント、度で引数

tand (45) 1

重要

度で測定された角度で作業するもう1つの方法は、前述の単位変換関数radian ()degrees() を使用することです。 ただし、sind(30) などの特殊な場合の丸め誤差を避けるために、次数ベースの三角関数を使用することをお勧めします。

次の表に、使用可能な双曲線関数を示します。

双曲線関数

sinh (ダブル精度) → ダブル精度

双曲正弦

sinh(1)1.1752011936438014

cosh (double precision) → double precision

双曲余弦

cosh (0) 1

tanh (ダブル精度) → ダブル精度

双曲正接

tanh(1)0.7615941559557649

asinh (ダブル精度) → ダブル精度

逆hyperbolic sine

asinh(1)0.881373587019543

acosh (double precision) → double precision

逆hyperbolic cosine

acosh (1) 0

atanh (ダブル精度) → ダブル精度

逆hyperbolic tangent

atanh(0.5)0.5493061443340548

PEMAINDER

説明

この関数を使用して、n1 /n2の余りを返します。

構文

PEMAINDER(n1,n2)

Parameters

パラメーター

説明

n1

被除数。NUMBER、FLOAT、BINARY_FLOAT、およびBINARY_DOUBLE数値型の式です。

n2

NUMBER、FLOAT、BINARY_FLOAT、およびBINARY_DOUBLE数値型の式であり、0にすることはできません。

戻り値のデータ型

戻り値の型は、数値の優先順位が高い引数のデータ型と同じです。

<bx id="1" type="code" text="code code=" SELECT REMAINDER(3.5,1);
残り
-----------
-0.5 "id=" vagfxr "title=" "uuid=" ljmryenjhxjcpy8hcev "data-tag=" codeblock "outputclass=" language-sql ""/>SELECT REMAINDER(3.5、1);
 残り
-----------
      -0.5