最後に、他の数学関数について見ていきましょう。

数学関数の一覧

関数名 戻り値 説明
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 (ラジアンから度数) */