Oracle SQL 関数 : COS,SIN,TAN : 三角関数
numberRet := COS( nRad ); /* 余弦関数 */
numberRet := SIN( nRad ); /* 正弦関数 */
numberRet := TAN( nRad ); /* 正接関数 */
COS,SIN,TAN関数はラジアンで表された角度[nRad]の余弦、正弦、正接値を戻します。
numberRet : 引数がBINARY_FLOATの場合、このファンクションはBINARY_DOUBLEを戻します。
それ以外の場合、引数と同じ数値データ型を戻します。
以下に COS,SIN,TAN 関数の例を示します。
3 ,SIN(3.14159265359 / 2) AS "SIN(PI / 2)" |
4 ,SIN(3.14159265359) AS "SIN(PI)" |
6 ,COS(3.14159265359 / 2) AS "COS(PI / 2)" |
7 ,COS(3.14159265359) AS "COS(PI)" |
9 ,TAN(3.14159265359 / 4) AS "TAN(PI / 4)" |
SIN(0) SIN(PI / 2) SIN(PI) COS(0) COS(PI / 2) COS(PI) TAN(0) TAN(PI / 4) |
0 1 -2.068E-13 1 -1.034E-13 -1 0 1 |
ラジアンで表された角度は「π」の倍数で表現され、Oracleには「π」を取得する関数が無いので、
近似値として「3.14159265359」を用いています。
「SIN(PI)」および「COS(PI / 2)」は数学的には「0」なのですが、内部的に近似計算なので「E-13」の値となりました。
これぐらいであれば、ほぼ「0」と考えてもいいと思います。
今までの経験では Oracle を使ったシステムで三角関数を使ったことが在りませんでした。
(数学的な計算が必要な場合には使うことが在るかもしれませんが、通常のシステムでは先ず使う機会がないのでは)
それでは、次は三角関数の逆関数について記します。
Oracle SQL 関数 : ACOS,ASIN,ATAN : 逆三角関数
numberRet := ACOS( n ); /* 逆余弦関数 */
numberRet := ASIN( n ); /* 逆正弦関数 */
numberRet := ATAN( n ); /* 逆正接関数 */
ACOS,ASIN,ATAN関数は引数[n]の(-1 ~ 1)の範囲に対応するラジアンで表された角度(0 ~ n)を戻します。
numberRet : 引数がBINARY_FLOATの場合、このファンクションはBINARY_DOUBLEを戻します。
それ以外の場合、引数と同じ数値データ型を戻します。
以下に ACOS,ASIN,ATAN 関数の例を示します。
2 ASIN(-1/SQRT(2)) / 3.14159265359 AS "ASIN : -45°" |
3 ,ASIN( 0) / 3.14159265359 AS "ASIN : 0°" |
4 ,ASIN( 1/SQRT(2)) / 3.14159265359 AS "ASIN : 45°" |
5 ,ACOS(-1) / 3.14159265359 AS "ACOS : -45°" |
6 ,ACOS( 0) / 3.14159265359 AS "ACOS : 0°" |
7 ,ACOS(-1) / 3.14159265359 AS "ACOS : 45°" |
8 ,ATAN( 0) / 3.14159265359 AS "ATAN : 0°" |
9 ,ATAN( 1) / 3.14159265359 AS "ATAN : 45°" |
ASIN : -45° ASIN : 0° ASIN : 45° ACOS : -45° ACOS : 0° ACOS : 45° ATAN : 0° ATAN : 45° |
ACOS,ASIN,ATAN関数で「-45°」「0°」「45°」となる値を引数に設定し、結果を見ています。
それぞれの関数の戻り値を「π = 3.14159265359」で割っていますので、ASIN(-1/SQRT(2))は
「-π/4」であることが分かります。
本書用のWebアプリを使ってSQLを実行し学習していきます。初心者の方に分かりやすく、図表を多く使って解説されています。 学習の最後には200問越えのドリルが付いていてSQLのスキルが試せる様になっています。