関数
コンピュータプログラムで利用される関数とは、繰り返し利用されるルーチン作業をモジュールとしてまとめたものです。
関数とは引数と返却値があります。利用時は、次に用に関数名と引数を指定します。
FUNCTION(X)
引数Xに値を指定すると、その値に対応した処理が行われれ、返却値が返されます。
SQLでは、計算をしたり、データの検索や集計、データの整形をする関数が用意されています。関数の種類を大きく分類すると、集計を行うための集計関数、数学的な算術関数、文字列を扱うための文字列関数、日付を操作するための日付関数に分類されます。
算術関数
小数点以下の値を切り捨てるCEILING関数、値を四捨五入して返すROUND関数、値を指定した小数点以下で切り捨てて返すTRUNCATE関数などはよく使う関数です。最初は扱いが難しいかもしれませんが、最初は使い方よりもどのような関数があるかを把握し、実践で徐々に覚えていくと良いかもしれませんね。
すべての数学関数はエラーの場合NULLを返します。
ABS(X)
絶対数
ABS()は、引数Xの絶対数を返します。引数Xには整数値型、実数値型の数値型を指定できます。返却値の型は引数と同じになります。
SELECT ABS( -10 ); -> 10 SELECT ABS( 10 ); -> 10 SELECT ABS( -5 ); -> 5 SELECT ABS( 5 ); -> 5
【絶対数】
絶対数とは、他の数との差や比ではなく、そのものが幾つあるかという数。正の値はそのまま、負の値は正にした数値。
ACOS(X)
アークコサイン(逆コサイン)
ACOS()は、引数Xのアークコサインを返します。引数Xには実数値型の数値(-1.0~1.0)を指定できます。
SELECT ACOS( 1 ); -> 0 SELECT ACOS( 0 ); -> 1.5707963267949
引数Xの値が -1.0 から 1.0 の範囲を越える場合はNULLを返します。
SELECT ACOS( 1.5 ); -> NULL
ASIN(X)
アークサイン(逆サイン)
ASIN()は、引数Xのアークサインを返します。引数Xには実数値型の数値(-1.0~1.0)を指定できます。
SELECT ASIN( 0.5 ); -> 0.5235987755983
引数Xの値が -1.0 から 1.0 の範囲を越える場合はNULLを返します。
SELECT ASIN( 1.5 ); -> NULL
ATAN(X)
アークタンジェント(逆タンジェント)
ATAN()は、引数Xのアークタンジェントを返します。引数Xには数値を指定できます。
SELECT ATAN( 5 ); -> 1.373400766945
ATAN2(X, Y)
アークタンジェント(逆タンジェント)
ATAN2()は、引数X、引数Yで指定した数値のアークタンジェントを返します。引数X、引数Yには数値を指定できます。
SELECT ATAN( 2, 1 ); -> 1.1071487177941 SELECT ATAN( PI(), 0 ); -> 1.5707963267949
CEILING(X)
最小の整数値を返す
CEILING()は、引数Xに指定した数値に小数点以下の数値があれば、整数に丸めて返します。FLOOR()とは違い、正の数は切り上げ、負の数は切り捨てになります。
SELECT CEILING( 1.2 ); -> 2 SELECT CEILING( -4.5 ); -> -4
COS(X)
コサイン
COS()は、引数Xのコサインを返します。引数Xにはラジアン単位の数値を指定します。
SELECT COS( PI() ); -> -1 SELECT COS( 2.0 ); -> -0.41614683654714 SELECT COS( -2.0 ); -> -0.41614683654714
COT(X)
コタンジェント
COT()は、引数Xのコタンジェントを返します。引数Xにはラジアン単位の数値を指定します。引数Xに0を指定した場合は計算できず、NULLが返されます。
SELECT COT( 10 ); -> 1.5423510453569 SELECT COT( 0 ); -> NULL
DEGREES(X)
ラジアンを度に変換
DEGREES()は、引数Xに指定した数値をラジアンから度(ディグリー)に変換して返します。度からラジアンに変換するには、RADIANS()を使います。
SELECT DEGREES( PI() ); -> 180 SELECT DEGREES( 1.25 ); -> 71.619724391353
EXP(X)
指数関数
EXP()は、e(自然対数の底)を引数Xで指定した数値で乗算して返します。
SELECT EXP( 1.0 ); -> 2.718281828459 SELECT EXP( 1.5 ); -> 4.4816890703381
FLOOR(X)
最大の整数値を返す
FLOOR()は、引数Xの値に小数点以下の数値があれば、整数に丸めて返します。正の数は切り捨て、負の数は切り上げです。引数Xには数値を指定できます。
SELECT FLOOR( 1.2 ); -> 1 SELECT FLOOR( -1.2); -> -2
GREATEST(X1, X2, ...)
最大値
GREATEST()は、引数リストの中で最大の値を返します。最小値を返すには、LEAST()を使います。
SELECT GREATEST( 5, 30, 19, 73 ); -> 73
GREATEST()の引数リストには文字列や日付型を渡すこともできます。
SELECT GREATEST( 'N', 'W', 'A' ); -> W
LEAST(X1, X2, ...)
最小値
LEAST()は、引数リストの中で最小の値を返します。最大値を返すには、GREATEST()を使います。
SELECT LEAST( 5, 30, 19, 73 ); -> 5
LEAST()の引数リストには文字列や日付型を渡すこともできます。
SELECT LEAST( 'N','W','A' ); -> A
LOG(X)
自然対数
LOG()は、引数Xの自然対数を返します。
SELECT LOG( 2.0 ); -> 0.69314718055995 SELECT LOG( 20.0 ); -> 2.995732273554
自然対数 -Wikipedia
http://ja.wikipedia.org/wiki/%E8%87%AA%E7%84%B6%E5%AF%BE%E6%95%B0
LOG10 常用対数
LOG10()は、引数Xの常用対数を返します。
SELECT LOG10( 10 ); -> 1 SELECT LOG10( 20 ); -> 1.301029995664 SELECT LOG10( -2.0 ); -> NULL
対数 -Wikipedia
http://ja.wikipedia.org/wiki/%E5%B8%B8%E7%94%A8%E5%AF%BE%E6%95%B0
MOD(N, M) / %
剰余
MOD()は、引数Nを引数Mで割り、そのあまりを返します。
SELECT MOD( 7, 2 ); -> 1 SELECT 7 % 2; -> 1 SELECT 7 MOD 2; -> 1
PI()
π
PI()は、円周率π(3.141592)を返します。
SELECT PI(); -> 3.141593
POW(X, Y) / POWER(X, Y)
べき乗
POW()は、引数XのY乗を返します。
# 2の2乗 SELECT POW( 2, 2 ); -> 4 # 2の10乗 SELECT POW(2, 10); -> 1024
RADIANS(X)
度をラジアンに変換
RADIANS()は、引数Xを度(ディグリー)からラジアンに変換して返します。πラジアンは100ディグリーと等価です。ラジアンから度に変換するには、DEGREES()を使います。
SELECT RADIANS( 5 ); -> 0.087266462599716
RAND(x)
乱数
RAND()は、 0から1.0までの範囲の浮動小数点の乱数を返します。
SELECT RAND(); -> 0.061605433990811 # 同じクエリですが、返却値はランダムで変わります。 SELECT RAND(); -> 0.54335564239263
引数Nを指定した場合は、それをシード値として使います。
SELECT RAND( 5 ); -> 0.40613597483014 SELECT RAND( 20 ); -> 0.15888261251047
RAND()関数とFLOOR()関数の組み合わせで、指定した範囲の整数をランダムに取得することができます。
SELECT FLOOR( 最小の値 + (RAND() * 最大の値-最小の値+1) )
たとえば、10から15の範囲にある整数をランダムに得るには、次のクエリを使うことができます。
SELECT FLOOR( 10 + (RAND() * 6) ); -> 15
ROUND(X)
四捨五入
ROUND()は、引数Xの値に小数点以下の数値があれば、小数点以下を四捨五入して返します。
SELECT ROUND( -1.25 ); -> -1
ROUND(X, D)のように引数が2つある場合、第1引数Xを第2引数Dで指定した少数桁に四捨五入して返します。Dが 0 の場合は整数の部分だけが返されます。
SELECT ROUND( 1.234, 1 ); -> 1.2
SIGN(X)
符号を返す
SIGN()は、引数Xの符号を返します。引数Xが負数のとき -1、ゼロのとき 0、整数のとき 1 を返します。
SELECT SIGN( -10 ); -> -1 SELECT SIGN( 0 ); -> 0 SELECT SIGN( 5 ); -> 1
SIN(X)
サイン
SIN()は、引数Xのサインを返します。引数Xにはラジアンで指定します。引数Xにはラジアン単位の数値を指定できます。
SELECT SIN( PI() ); -> 1.2246063538224e-16 SELECT SIN( 2.0 ); -> 0.90929742682568 SELECT SIN( 1.0 ); -> 0.8414709848079
SQRT(X)
平方根
SQRT()は、引数Xの平方根を返します。引数Xに不の値を指定することはできません。返却値は実数値型です。
# 9の平方根を求める(3×3=9) SELECT SQRT( 9 ); -> 3 # √2の解を求める SELECT SQRT( 2 ); -> 1.4142135623731
- 平方根
- 平方根とは、2乗するとXになる数です。
元の数値を正方形の面積とすると、平方根は辺の長さに当たります。
TAN(X)
タンジェント
TAN()は、引数Xのタンジェントを返します。引数Xにはラジアン単位の数値を指定できます。返却値は実数値型です。
SELECT TAN( PI() + 1 ); -> 1.5574077246549
TRUNCATE(X, D)
切り捨て
TRUNCATE()は、引数Xの値を少数点以下D桁で切り捨てます。引数Dの値が 0 の場合は整数の部分だけを返します。
SELECT TRUNCATE( 1.26, 1 ); -> 1.2 SELECT TRUNCATE( 1.26, 0 ); -> 1