無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 11 関数と演算子 :: 11.4 数字関数 :: 11.4.2 数学関数
« 11.4.1 算術演算子

11.5 日付時刻関数 »
Section Navigation      [Toggle]
  • 11.4 数字関数
  • 11.4.1 算術演算子
  • 11.4.2 数学関数

11.4.2. 数学関数

すべての数学関数は、エラーのイベントで NULL を戻します。

  • ABS(X)

    X の絶対値を戻します。

    mysql> SELECT ABS(2);
            -> 2
    mysql> SELECT ABS(-32);
            -> 32
    

    この関数は、BIGINT 値とも安全に使用できます。

  • ACOS(X)

    X のアーク コサインを戻します。これは、コサインが X であるものの値です。X が -1 から 1 の範囲にない場合は NULL を戻します。

    mysql> SELECT ACOS(1);
            -> 0
    mysql> SELECT ACOS(1.0001);
            -> NULL
    mysql> SELECT ACOS(0);
            -> 1.5707963267949
    
  • ASIN(X)

    X のアーク サインを戻します。これは、サインが X であるものの値です。X が -1 から 1 の範囲にない場合は NULL を戻します。

    mysql> SELECT ASIN(0.2);
            -> 0.20135792079033
    mysql> SELECT ASIN('foo');
    
    +-------------+
    | ASIN('foo') |
    +-------------+
    |           0 |
    +-------------+
    1 row in set, 1 warning (0.00 sec)
    
    mysql> SHOW WARNINGS;
    +---------+------+-----------------------------------------+
    | Level   | Code | Message                                 |
    +---------+------+-----------------------------------------+
    | Warning | 1292 | Truncated incorrect DOUBLE value: 'foo' |
    +---------+------+-----------------------------------------+
    
  • ATAN(X)

    X のアーク タンジェントを戻します。これは、タンジェントが X であるものの値です。

    mysql> SELECT ATAN(2);
            -> 1.1071487177941
    mysql> SELECT ATAN(-2);
            -> -1.1071487177941
    
  • ATAN(Y,X), ATAN2(Y,X)

    ふたつの変数 X および Y のアーク タンジェントを戻します。これは、両方の引数の符号が結果の象限の判定に使用される以外は、Y / X のアーク タンジェントの計算に類似しています。

    mysql> SELECT ATAN(-2,2);
            -> -0.78539816339745
    mysql> SELECT ATAN2(PI(),0);
            -> 1.5707963267949
    
  • CEILING(X), CEIL(X)

    X よりは大きな整数値のうち、最小のものを戻します。

    mysql> SELECT CEILING(1.23);
            -> 2
    mysql> SELECT CEIL(-1.23);
            -> -1
    

    これらのふたつの関数は同義です。戻り値は BIGINT に変換されますのでご注意ください。

  • COS(X)

    X のコサインを戻します。X はラジアンで与えられています。

    mysql> SELECT COS(PI());
            -> -1
    
  • COT(X)

    X のコタンジェントを戻します。

    mysql> SELECT COT(12);
            -> -1.5726734063977
    mysql> SELECT COT(0);
            -> NULL
    
  • CRC32(expr)

    巡回符合検査値を算定し、32 ビットの符号のない値を戻します。引数が NULL である場合、結果は NULL になります。引数はストリングになると想定され、そしてストリングでない場合でも、 ( 可能であれば ) ストリングとして扱われます。

    mysql> SELECT CRC32('MySQL');
            -> 3259397556
    mysql> SELECT CRC32('mysql');
            -> 2501908538
    
  • DEGREES(X)

    ラジアンからティグリーに変換された引数 X を戻します。

    mysql> SELECT DEGREES(PI());
            -> 180
    mysql> SELECT DEGREES(PI() / 2);
            -> 90
    
  • EXP(X)

    e ( 自然対数の底 ) の X 乗の値を戻します。

    mysql> SELECT EXP(2);
            -> 7.3890560989307
    mysql> SELECT EXP(-2);
            -> 0.13533528323661
    mysql> SELECT EXP(0);
            -> 1
    
  • FLOOR(X)

    X よりは小さな整数値のうち、最大のものを戻します。

    mysql> SELECT FLOOR(1.23);
            -> 1
    mysql> SELECT FLOOR(-1.23);
            -> -2
    

    戻り値は BIGINT に変換されますのでご注意ください。

  • FORMAT(X,D)

    数字 X を '#,###,###.##' のようにフォーマットし、D 少数位まで丸め、その結果をストリングとして戻します。詳細は、項11.3. 「文字列関数」 をご覧ください。

  • LN(X)

    X の自然対数を戻します。これは、X の底 e の対数です。

    mysql> SELECT LN(2);
            -> 0.69314718055995
    mysql> SELECT LN(-2);
            -> NULL
    

    この関数は LOG(X) と同義です。

  • LOG(X), LOG(B,X)

    ひとつのパラメータで呼び出される場合、この関数は X の自然対数を戻します。

    mysql> SELECT LOG(2);
            -> 0.69314718055995
    mysql> SELECT LOG(-2);
            -> NULL
    

    ふたつのパラメータで呼び出される場合、この関数は任意のベース B に対して X の自然対数を戻します。

    mysql> SELECT LOG(2,65536);
            -> 16
    mysql> SELECT LOG(10,100);
            -> 2
    

    LOG(B,X) は LOG(X) / LOG(B) に等価です。

  • LOG2(X)

    X のベース 2 の対数を戻します。

    mysql> SELECT LOG2(65536);
            -> 16
    mysql> SELECT LOG2(-100);
            -> NULL
    

    LOG2() は、保存のために数字が何ビットを必要とするか調べるのに便利です。この関数は式 LOG(X) / LOG(2) と同義です。

  • LOG10(X)

    X のベース 10 の対数を戻します。

    mysql> SELECT LOG10(2);
            -> 0.30102999566398
    mysql> SELECT LOG10(100);
            -> 2
    mysql> SELECT LOG10(-100);
            -> NULL
    

    LOG10(X) は LOG(10,X) と等価です。

  • MOD(N,M), N % M, N MOD M

    モジュロ演算。M によって除算された N の余りを戻します。

    mysql> SELECT MOD(234, 10);
            -> 4
    mysql> SELECT 253 % 7;
            -> 1
    mysql> SELECT MOD(29,9);
            -> 2
    mysql> SELECT 29 MOD 9;
            -> 2
    

    この関数は、BIGINT 値とも安全に使用できます。

    MOD() はまた、小数部を持つ値にも利用でき、除算の後に正確な余りを戻します。

    mysql> SELECT MOD(34.5,3);
            -> 1.5
    

    MOD(N,0) は NULL を戻します。

  • PI()

    π ( pi ) の値を戻します。表示されるデフォルトの少数点以下の桁数は 7 ですが、MySQL は内部的に全倍精度値を使用します。

    mysql> SELECT PI();
            -> 3.141593
    mysql> SELECT PI()+0.000000000000000000;
            -> 3.141592653589793116
    
  • POW(X,Y), POWER(X,Y)

    X の Y 乗の値を戻します。

    mysql> SELECT POW(2,2);
            -> 4
    mysql> SELECT POW(2,-2);
            -> 0.25
    
  • RADIANS(X)

    ディグリーからラジアンに変換された引数 X を戻します。( π ラジアンは 100 ディグリーと等価です ) 。

    mysql> SELECT RADIANS(90);
            -> 1.5707963267949
    
  • RAND(), RAND(N)

    0 <= v < 1.0 の範囲にあるランダムな浮動小数点値 v を戻します。定数整数引数 N が指定されている場合は、カラム値の反復可能なシークエンスを生成するシード値として使用されます。

    mysql> SELECT RAND();
            -> 0.9233482386203
    mysql> SELECT RAND(20);
            -> 0.15888261251047
    mysql> SELECT RAND(20);
            -> 0.15888261251047
    mysql> SELECT RAND();
            -> 0.63553050033332
    mysql> SELECT RAND();
            -> 0.70100469486881
    mysql> SELECT RAND(20);
            -> 0.15888261251047
    

    定数イニシャライザを使用すれば、シードは実行の前の、ステートメントがコンパイルされる際に一度初期化されます。MySQL 5.1.16 からは、非定数イニシャライザ ( カラム名など ) が引数として使用される場合は、シードは RAND() の各呼び出しの値で初期化されます。( これは、等価の引数値に対しては、RAND() は毎回同じ値を戻すということを示しています ) 。MySQL 5.1.3 から 5.1.15 では、非定数引数は許可されていません。それ以前では、非定数引数の使用の効果は未定義になっています。

    i <= R < j の範囲のランダムな整数 R を取得するには、式 FLOOR(i + RAND() * (j ? i) を使用します。例えば、7 <= R < 12 の範囲にあるランダムな整数を得るには、次のステートメントを使うことができます :

    SELECT FLOOR(7 + (RAND() * 5));
    

    ORDER BY はカラムを複数回評価するため、ORDER BY 句内で RAND() 値を持つカラムを使用することはできません。しかし、次のように行を順不同に摘出することは可能です :

    mysql> SELECT * FROM tbl_name ORDER BY RAND();
    

    LIMIT と結合された ORDER BY RAND() は、行のセットからランダムなサンプルを選ぶ場合に便利です :

    mysql> SELECT * FROM table1, table2 WHERE a=b AND c<d -> ORDER BY RAND() LIMIT 1000;
    

    WHERE 句内の RAND() は、WHERE が実行されるたびに再評価されますのでご注意ください。

    RAND() は完璧なランダム発生器というわけではありませんが、同じ MySQL バージョンのプラットフォーム間においてポータブルな ad hoc ランダム数を生成する最も速い方法です。

  • ROUND(X), ROUND(X,D)

    引数 X を D 小数点に丸めます。丸めアルゴリズムは X のデータタイプに基づきます。D は特別に指定されない限り、デフォルトにより 0 になります。D は時に負数で、値 X の小数点左側の D 桁がゼロになる原因になる場合があります。

    mysql> SELECT ROUND(-1.23);
            -> -1
    mysql> SELECT ROUND(-1.58);
            -> -2
    mysql> SELECT ROUND(1.58);
            -> 2
    mysql> SELECT ROUND(1.298, 1);
            -> 1.3
    mysql> SELECT ROUND(1.298, 0);
            -> 1
    mysql> SELECT ROUND(23.298, -1);
            -> 20
    

    出力型は最初の引数 ( 整数、重複、または 10 進数と想定 ) と同じタイプです。つまり、整数引数では、結果は整数 ( 小数点なし ) になるということになります。

    ROUND() は、最初の引数が 10 進値である時、高精度値引数に対して精度算数ライブラリを使用します :

    • 高精度値数に対して、ROUND() は 「四捨五入」 ルールを行使します : .5 以上の小数部を持つ値は、正数である場合は次の整数に切り上げられ、負数である場合は切り下げられます。( つまりゼロから切り遠ざけられる ) 。0.5 未満の小数部を持つ値は、正数である場合は次の整数に切り下げられ、負数である場合は切り上げられます。

    • 近似数値では、結果は C ライブラリによります。多くのシステムはで、これはつまり ROUND() は " 最も近い偶数に丸める " ルールを使用しているということになります : なんらかの小数部を持つ値は最も近い偶数の整数に丸められます。

    次の例は高精度値と近似値で、丸め方がどう異なるかを示しています :

    mysql> SELECT ROUND(2.5), ROUND(25E-1);
    +------------+--------------+
    | ROUND(2.5) | ROUND(25E-1) |
    +------------+--------------+
    | 3          |            2 |
    +------------+--------------+
    

    詳細は 章?22. 精密計算 をご覧ください。

  • SIGN(X)

    X が負数か、ゼロか、または正数かによって、引数の符号を -1 、0 、もしくは 1 として戻します。

    mysql> SELECT SIGN(-32);
            -> -1
    mysql> SELECT SIGN(0);
            -> 0
    mysql> SELECT SIGN(234);
            -> 1
    
  • SIN(X)

    X のサインを戻します。X はラジアンで与えられています。

    mysql> SELECT SIN(PI());
            -> 1.2246063538224e-16
    mysql> SELECT ROUND(SIN(PI()));
            -> 0
    
  • SQRT(X)

    非負数 X の平方根を戻します。

    mysql> SELECT SQRT(4);
            -> 2
    mysql> SELECT SQRT(20);
            -> 4.4721359549996
    mysql> SELECT SQRT(-16);
            -> NULL        
    
  • TAN(X)

    X のタンジェントを戻します。X はラジアンで与えられています。

    mysql> SELECT TAN(PI());
            -> -1.2246063538224e-16
    mysql> SELECT TAN(PI()+1);
            -> 1.5574077246549
    
  • TRUNCATE(X,D)

    D 小数点を切り捨てて、数字 X を戻します。D が 0 の場合、結果は小数点または小数部を持ちません。D は時に負数で、値 X の小数点左側の D 桁がゼロになる原因になる場合があります。

    mysql> SELECT TRUNCATE(1.223,1);
            -> 1.2
    mysql> SELECT TRUNCATE(1.999,1);
            -> 1.9
    mysql> SELECT TRUNCATE(1.999,0);
            -> 1
    mysql> SELECT TRUNCATE(-1.999,1);
            -> -1.9
    mysql> SELECT TRUNCATE(122,-2);
           -> 100
    mysql> SELECT TRUNCATE(10.28*100,0);
           -> 1028
    

    すべての数字はゼロに向かって丸められます。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.