最後に、他の数学関数について見ていきましょう。
数学関数の一覧
関数名 | 戻り値 | 説明 |
---|---|---|
RAND | float | 0から1の間の乱数を返します |
ABS | 数値(入力値依存) | 正の絶対値を返します |
SIGN | 数値(入力値依存) | 符号を返します。1:正、-1:負、0:ゼロ |
SQUARE | float | 2乗を返します |
SQRT | float | 平方根を返します |
POWER | 数値(入力値依存) | べき乗値を返します |
EXP | float | 指数値を返します |
LOG | float | 自然対数を返します |
LOG10 | float | 10を底とした対数を返します |
PI | float | 円周率を返します |
SIN | float | サインを返します |
ASIN | float | アークサインを返します(引数有効範囲-1~1) |
COS | float | コサインを返します |
ACOS | float | アークコサインを返します(引数有効範囲-1~1) |
TAN | float | タンジェントを返します |
COT | float | コタンジェントを返します |
ATAN | float | アークタンジェントを返します |
ATN2 | float | 原点から点(y, x)までの線の間の角度をラジアンで返します |
RADIANS | 数値(入力値依存) | 度をラジアンで返します |
DEGREES | 数値(入力値依存) | ラジアンを度の単位で返します |
乱数、絶対値、符号、指数、べき乗等(RAND、ABS、SIGN等)
乱数の生成を行うには、RAND関数を使用します。RAND関数は、0から1の間の浮動小数点のランダムな値を返します。RAND関数の引数に整数値を指定すると、その値を元に乱数を生成します。 また、他の数学関数(ABS関数、SIGN関数等)では、1つの引数に対して、個別の演算を実行して、その結果を返します。
RAND関数、ABS関数、SIGN関数等の数学関数の実行例
--乱数を生成
SELECT RAND()
/* → 0.841834685427544 (引数なしで乱数生成)*/
SELECT RAND(1)
/* → 0.713591993212924 (引数に1を指定して乱数生成)*/
SELECT RAND((DATEPART(millisecond, GETDATE()) * 10000 )
+ (DATEPART(second, GETDATE()) * 100 )
+ (DATEPART(minute, GETDATE()) ))
/* → 0.414786130785272 (引数に時刻を指定して乱数生成)*/
SELECT ABS(-123) /* → 123 (絶対値)*/
SELECT SIGN(-5) /* → -1 (符号)*/
SELECT SQUARE(3) /* → 9 (2乗)*/
SELECT SQRT(9) /* → 3 (平方根)*/
SELECT POWER(2,3) /* → 8 (べき乗:2の3乗)*/
SELECT EXP(1) /* → 2.71828182845905 (指数)*/
SELECT LOG(EXP(100)) /* → 100 (自然対数)*/
SELECT LOG10(1000) /* → 3 (10を底とした対数)*/
SELECT PI() /* → 3.14159265358979(円周率) */
三角関数(SIN、COS、TAN等)
SQL Serverには、三角関数向けの関数も用意されています。 ACOS関数、COS関数、ATAN関数、ATN2関数、COT関数はラジアンを返し、TAN関数、SIN関数、ASIN関数はラジアンを入力値とします。度単位の角度とラジアン値を変換するには、RADIANS関数とDEGREES関数を使用できます。
SIN関数、COS関数、TAN関数等の実行例
SELECT SIN(45.0) /* → 0.850903524534118 (サイン)*/
SELECT ASIN(-1.0) /* → -1.5707963267949 (アークサイン)*/
SELECT COS(15.0) /* → -0.759687912858821 (コサイン) */
SELECT ACOS(-1.0) /* → 3.14159265358979 (アークコサイン)*/
SELECT TAN(PI()/4) /* → 1 (タンジェント)*/
SELECT COT(125.0) /* → -1.27867334100374 (コタンジェント) */
SELECT ATAN(-45.0) /* → -1.54857776146818 (アークタンジェント)*/
SELECT ATN2(1.0 , 1.0) /* → -0.785398163397448 (点(1, 1)までのラジアン)*/
SELECT RADIANS(18.5) /* → 0.322885911618 (度数からラジアン)*/
SELECT DEGREES(PI()/4) /* → 45 (ラジアンから度数) */