すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:数学関数の概要

最終更新日:Jul 25, 2026

このトピックでは、MaxCompute でサポートされている数学関数について説明します。各関数の構文、パラメーターの説明、および使用例を詳しく説明します。これらの数学関数を使用すると、データ計算やデータ変換などのさまざまな操作を実行できます。

次の表に、MaxCompute SQL でサポートされている数学関数を示します。

関数

機能

ABS

絶対値を計算します。

ACOS

逆余弦 (アークコサイン) を計算します。

ATAN2

expr1/expr2 の逆正接 (アークタンジェント) を計算します。

ASIN

逆正弦 (アークサイン) を計算します。

ATAN

逆正接 (アークタンジェント) を計算します。

BIN

2 進数値を計算します。

BIT_COUNT

指定されたパラメーター value の 2 進数表現における 1 の数を計算します。

CBRT

立方根を計算します。

CEIL

値を切り上げます。

CONV

ある基数の数値を別の基数に変換します。

CORR

ピアソンの相関係数を計算します。

COS

余弦 (コサイン) を計算します。

COSH

双曲線余弦 (ハイパーボリックコサイン) を計算します。

COT

余接 (コタンジェント) を計算します。

DEGREES

ラジアンを度に変換します。

E

e の値を返します。

EXP

指数値を計算します。

FACTORIAL

階乗を計算します。

FILTER

ARRAY 配列内の要素をフィルター処理します。

FLOOR

値を切り捨てます。

FORMAT_NUMBER

数値を指定された形式の文字列に変換します。

GREATEST

一連の値を比較し、最大値を返します。

HEX

整数または文字列の 16 進数形式を返します。

ISNAN

式の値が NaN かどうかをチェックします。

LEAST

一連の値を比較し、最小値を返します。

LN

自然対数を計算します。

LOG

対数を計算します。

LOG10

常用対数を計算します。

LOG2

2 進対数を計算します。

NEGATIVE

式の負の値を返します。

PI

π の値を返します。

POSITIVE

式の値を返します。

POW

べき乗を計算します。

RADIANS

度をラジアンに変換します。

RAND

乱数を返します。

ROUND

指定された小数点以下の桁数に四捨五入した値を返します。

SHIFTLEFT

左シフト値を計算します。

SHIFTRIGHT

右シフト値を計算します。

SHIFTRIGHTUNSIGNED

符号なし右シフト値を計算します。

SIGN

入力パラメーターの符号を返します。

SIN

正弦 (サイン) を計算します。

SINH

双曲線正弦 (ハイパーボリックサイン) を計算します。

SQRT

平方根を計算します。

TAN

正接 (タンジェント) を計算します。

TANH

双曲線正接 (ハイパーボリックタンジェント) を計算します。

TRUNC

指定された小数点以下の桁数に切り捨てた値を返します。

UNHEX

16 進数文字列で表される文字列を返します。

WIDTH_BUCKET

指定されたフィールド値が属するバケット番号を返します。

説明

剰余の計算など、計算の詳細については、「演算子」をご参照ください。

注意事項

MaxCompute V2.0 は追加の関数を提供します。使用する関数に MaxCompute V2.0 データ型エディションでサポートされている新しいデータ型が含まれる場合は、SET 文を実行して MaxCompute V2.0 データ型エディションを有効にする必要があります。新しいデータ型には、TINYINT、SMALLINT、INT、FLOAT、VARCHAR、TIMESTAMP、BINARY が含まれます。

  • セッションレベル:MaxCompute V2.0 データ型エディションを使用するには、実行したい SQL ステートメントの前に set odps.sql.type.system.odps2=true; を追加し、それらを一緒にコミットして実行する必要があります。

  • プロジェクトレベル:プロジェクトオーナーは、プロジェクトの要件に基づいてプロジェクトの MaxCompute V2.0 データ型エディションを有効にできます。構成は 10〜15 分後に有効になります。プロジェクトレベルで MaxCompute V2.0 データ型エディションを有効にするには、次のコマンドを実行します。

    setproject odps.sql.type.system.odps2=true; 

    setproject の詳細については、「プロジェクト操作」をご参照ください。プロジェクトレベルで MaxCompute V2.0 データ型エディションを有効にする際の注意事項の詳細については、「データ型バージョンガイド」をご参照ください。

サンプルデータ

各関数の使用方法を理解しやすくするために、このトピックではソースデータとそのデータに基づく例を提供します。次のサンプルコマンドは、mf_math_fun_t という名前のテーブルを作成し、そのテーブルにデータを追加します。

create table if not exists mf_math_fun_t(
     int_data     int,
     bigint_data  bigint,
     double_data  double,
     decimal_data decimal,
     float_data   float,
     string_data  string
    );
insert into mf_math_fun_t values
(null, -10, 0.525, 0.525BD, cast(0.525 as float), '10'),
(-20, null, -0.1, -0.1BD, cast(-0.1 as float), '-10'),
(0, -1, null, 20.45BD, cast(-1 as float), '30'),
(-40, 4, 0.89, null, cast(0.89 as float), '-30'),
(5, -50, -1, -1BD, null, '50'),
(-60, 6, 1.5, 1.5BD, cast(1.5 as float), '-50'),
(-1, -70, -7.5, -7.5BD, cast(-7.5 as float),null ),
(-80, 1, -10.2, -10.2BD, cast(-10.2 as float), '-1' ),
(9, -90, 2.58, 2.58BD, cast(2.58 as float), '0'),
(-100, 10, -5.8, -5.8BD, cast(-5.8 as float), '-90');

次のコマンドは、mf_math_fun_t テーブルからデータをクエリします。

select * from mf_math_fun_t;
-- 以下の結果が返されます。
+----------+-------------+-------------+--------------+------------+-------------+
| int_data | bigint_data | double_data | decimal_data | float_data | string_data |
+----------+-------------+-------------+--------------+------------+-------------+
| NULL     | -10         | 0.525       | 0.525        | 0.525      | 10          |
| -20      | NULL        | -0.1        | -0.1         | -0.1       | -10         |
| 0        | -1          | NULL        | 20.45        | -1         | 30          |
| -40      | 4           | 0.89        | NULL         | 0.89       | -30         |
| 5        | -50         | -1.0        | -1           | NULL       | 50          |
| -60      | 6           | 1.5         | 1.5          | 1.5        | -50         |
| -1       | -70         | -7.5        | -7.5         | -7.5       | NULL        |
| -80      | 1           | -10.2       | -10.2        | -10.2      | -1          |
| 9        | -90         | 2.58        | 2.58         | 2.58       | 0           |
| -100     | 10          | -5.8        | -5.8         | -5.8       | -90         |
+----------+-------------+-------------+--------------+------------+-------------+

ABS

  • 構文

    bigint|double|decimal abs(<number>)
  • 説明

    number の絶対値を計算します。

  • パラメーター

    number:必須。 DOUBLE、BIGINT、または DECIMAL 型の値。入力値が STRING 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

    説明

    入力値が BIGINT 型で、BIGINT の値の範囲を超える場合、値は DOUBLE 型に変換されます。この変換により、精度が低下する可能性があります。

  • 戻り値

    戻り値のデータ型は、入力パラメーターのデータ型と同じです。次のルールが適用されます。

    • number が DOUBLE、BIGINT、または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING 型の場合、DOUBLE 型の値が返されます。

    • number が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は NULL です。
      select abs(null);
      --戻り値は 1 です。
      select abs(-1);
      --戻り値は 1.2 です。
      select abs(-1.2);
      --戻り値は 2.0 です。
      select abs("-2");
      --戻り値は 1.2232083745629837e32 です。
      select abs(122320837456298376592387456923748);
      --tbl1 テーブルの id フィールドの絶対値を計算します。次のコードは、SQL ステートメントで ABS 関数を使用する方法の完全な例を示しています。ウィンドウ関数と集計関数を除く他のビルトイン関数も同様の方法で使用されます。
      select abs(id) from tbl1;
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは絶対値を計算します。

      select abs(bigint_data) as bigint_new, abs(double_data) as double_new, abs(decimal_data) as decimal_new, abs(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | 10         | 0.525      | 0.525       | 10.0       |
      | NULL       | 0.1        | 0.1         | 10.0       |
      | 1          | NULL       | 20.45       | 30.0       |
      | 4          | 0.89       | NULL        | 30.0       |
      | 50         | 1.0        | 1           | 50.0       |
      | 6          | 1.5        | 1.5         | 50.0       |
      | 70         | 7.5        | 7.5         | NULL       |
      | 1          | 10.2       | 10.2        | 1.0        |
      | 90         | 2.58       | 2.58        | 0.0        |
      | 10         | 5.8        | 5.8         | 90.0       |
      +------------+------------+-------------+------------+

ACOS

  • 構文

    double|decimal acos(<number>)
  • 説明

    number の逆余弦 (アークコサイン) を計算します。

  • パラメーター

    number:必須。 [-1, 1] の範囲の値。値は DOUBLE または DECIMAL 型です。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    戻り値のデータ型は、入力パラメーターのデータ型と同じです。値は 0 から π の範囲です。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が [-1, 1] の範囲にない場合、NULL が返されます。Hive 互換モードでは、NaN が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 0.5155940062460905 です。
      select acos("0.87");
      --戻り値は 1.5707963267948966 です。
      select acos(0);
      --戻り値は NULL です。
      select acos(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは逆余弦 (アークコサイン) を計算します。

      select acos(bigint_data) as bigint_new, acos(double_data) as double_new, acos(decimal_data) as decimal_new, acos(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +-------------------+--------------------+--------------------+---------------------+
      | bigint_new        | double_new         | decimal_new        | string_new          |
      +-------------------+--------------------+--------------------+---------------------+
      | NULL              | 1.0180812136981134 | 1.0180812136981134 | NULL                |
      | NULL              | 1.6709637479564565 | 1.6709637479564565 | NULL                |
      | 3.141592653589793 | NULL               | NULL               | NULL                |
      | NULL              | 0.4734511572720662 | NULL               | NULL                |
      | NULL              | 3.141592653589793  | 3.141592653589793  | NULL                |
      | NULL              | NULL               | NULL               | NULL                |
      | NULL              | NULL               | NULL               | NULL                |
      | 0.0               | NULL               | NULL               | 3.141592653589793   |
      | NULL              | NULL               | NULL               | 1.5707963267948966  |
      | NULL              | NULL               | NULL               | NULL                |
      +-------------------+--------------------+--------------------+---------------------+

ATAN2

  • 構文

    double atan2(<expr1>, <expr2>)
  • 説明

    expr1/expr2 の逆正接 (アークタンジェント) を計算します。

  • パラメーター

    • expr1:必須。 DOUBLE 型の値。入力値が STRING、BIGINT、または DECIMAL 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

    • expr2:必須。 DOUBLE 型の値。入力値が STRING、BIGINT、または DECIMAL 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE 型の値が返されます。値は -π/2 から π/2 の範囲です。expr1 または expr2 の値が NULL の場合、NULL が返されます。

  • --戻り値は 0.0 です。
    select atan2(0, 0);

ASIN

  • 構文

    double|decimal asin(<number>)
  • 説明

    number の逆正弦 (アークサイン) を計算します。

  • パラメーター

    number:必須。 [-1, 1] の範囲の値。値は DOUBLE または DECIMAL 型です。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    戻り値のデータ型は、入力パラメーターのデータ型と同じです。値は -π/2 から π/2 の範囲です。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が [-1, 1] の範囲にない場合、NULL が返されます。Hive 互換モードでは、NaN が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 1.5707963267948966 です。
      select asin(1);
      --戻り値は -1.5707963267948966 です。
      select asin(-1);
      --戻り値は NULL です。
      select asin(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは逆正弦 (アークサイン) を計算します。

      select asin(bigint_data) as bigint_new, asin(double_data) as double_new, asin(decimal_data) as decimal_new, asin(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +--------------------+---------------------+---------------------+---------------------+
      | bigint_new         | double_new          | decimal_new         | string_new          |
      +--------------------+---------------------+---------------------+---------------------+
      | NULL               | 0.5527151130967832  | 0.5527151130967832  | NULL                |
      | NULL               | -0.1001674211615598 | -0.1001674211615598 | NULL                |
      | -1.5707963267948966| NULL                | NULL                | NULL                |
      | NULL               | 1.0973451695228305  | NULL                | NULL                |
      | NULL               | -1.5707963267948966 | -1.5707963267948966 | NULL                |
      | NULL               | NULL                | NULL                | NULL                |
      | NULL               | NULL                | NULL                | NULL                |
      | 1.5707963267948966 | NULL                | NULL                | -1.5707963267948966 |
      | NULL               | NULL                | NULL                | 0.0                 |
      | NULL               | NULL                | NULL                | NULL                |
      +--------------------+---------------------+---------------------+---------------------+

ATAN

  • 構文

    double atan(<number>)
  • 説明

    number の逆正接 (アークタンジェント) を計算します。

  • パラメーター

    number:必須。 DOUBLE 型の値。入力値が STRING、BIGINT、または DECIMAL 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE 型の値が返されます。値は -π/2 から π/2 の範囲です。number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 0.7853981633974483 です。
      select atan(1);
      --戻り値は -0.7853981633974483 です。
      select atan(-1);
      --戻り値は NULL です。
      select atan(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは逆正接 (アークタンジェント) を計算します。

      select atan(bigint_data) as bigint_new, atan(double_data) as double_new, atan(decimal_data) as decimal_new, atan(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +---------------------+----------------------+----------------------+---------------------+
      | bigint_new          | double_new           | decimal_new          | string_new          |
      +---------------------+----------------------+----------------------+---------------------+
      | -1.4711276743037347 | 0.483447001567199    | 0.483447001567199    | 1.4711276743037347  |
      | NULL                | -0.09966865249116204 | -0.09966865249116204 | -1.4711276743037347 |
      | -0.7853981633974483 | NULL                 | 1.521935491607842    | 1.5374753309166493  |
      | 1.3258176636680326  | 0.7272626879966904   | NULL                 | -1.5374753309166493 |
      | -1.550798992821746  | -0.7853981633974483  | -0.7853981633974483  | 1.550798992821746   |
      | 1.4056476493802699  | 0.982793723247329    | 0.982793723247329    | -1.550798992821746  |
      | -1.5565115842075    | -1.4382447944982226  | -1.4382447944982226  | NULL                |
      | 0.7853981633974483  | -1.473069419436178   | -1.473069419436178   | -0.7853981633974483 |
      | -1.5596856728972892 | 1.2010277920014796   | 1.2010277920014796   | 0.0                 |
      | 1.4711276743037347  | -1.4000611153196139  | -1.4000611153196139  | -1.5596856728972892 |
      +---------------------+----------------------+----------------------+---------------------+

BIN

  • 構文

    string bin(<number>)
  • 説明

    number の 2 進数表現を返します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    number:必須。 BIGINT、INT、SMALLINT、または TINYINT 型の値。

  • 戻り値

    STRING 型の値が返されます。次のルールが適用されます。

    • number のデータ型が BIGINT、INT、SMALLINT、または TINYINT でない場合、エラーが返されます。

    • number の値が 0 の場合、0 が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 0 です。
      select bin(0);
      --戻り値は NULL です。
      select bin(null);
      --戻り値は 1100 です。
      select bin(12);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは int_data および bigint_data 列の 2 進数表現を取得します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select bin(int_data) as int_new, bin(bigint_data) as bigint_new from mf_math_fun_t;

      以下の結果が返されます。

      +----------------------------------------------------------------------------+------------------------------------------------------------------+
      | int_new                                                                    | bigint_new                                                       |
      +----------------------------------------------------------------------------+------------------------------------------------------------------+
      | NULL                                                                       | 1111111111111111111111111111111111111111111111111111111111110110 |
      | 1111111111111111111111111111111111111111111111111111111111101100           | NULL                                                             |
      | 0                                                                          | 1111111111111111111111111111111111111111111111111111111111111111 |
      | 1111111111111111111111111111111111111111111111111111111111011000           | 100                                                              |
      | 101                                                                        | 1111111111111111111111111111111111111111111111111111111111001110 |
      | 1111111111111111111111111111111111111111111111111111111111000100           | 110                                                              |
      | 1111111111111111111111111111111111111111111111111111111111111111           | 1111111111111111111111111111111111111111111111111111111110111010 |
      | 1111111111111111111111111111111111111111111111111111111110110000           | 1                                                                |
      | 1001                                                                       | 1111111111111111111111111111111111111111111111111111111110100110 |
      | 1111111111111111111111111111111111111111111111111111111110011100           | 1010                                                             |
      +----------------------------------------------------------------------------+------------------------------------------------------------------+

CBRT

  • 構文

    double cbrt(<number>)
  • 説明

    number の立方根を計算します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    number:必須。 BIGINT、INT、SMALLINT、TINYINT、DOUBLE、FLOAT、または STRING 型の値。

  • 戻り値

    DOUBLE 型の値が返されます。次のルールが適用されます。

    • number のデータ型が BIGINT、INT、SMALLINT、TINYINT、DOUBLE、FLOAT、または STRING でない場合、エラーが返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 2.0 です。
      select cbrt(8);
      --戻り値は NULL です。
      select cbrt(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは decimal_data を除くすべての列の立方根を取得します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select cbrt(int_data) as int_new, cbrt(bigint_data) as bigint_new, cbrt(double_data) as double_new, cbrt(float_data) as float_new, cbrt(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +---------------------+---------------------+----------------------+---------------------+---------------------+
      | int_new             | bigint_new          | double_new           | float_new           | string_new          |
      +---------------------+---------------------+----------------------+---------------------+---------------------+
      | NULL                | -2.1544346900318834 | 0.806714323012272    | 0.8067143108004823  | 2.1544346900318834  |
      | -2.7144176165949063 | NULL                | -0.46415888336127786 | -0.46415888566678   | -2.1544346900318834 |
      | 0.0                 | -1.0                | NULL                 | -1.0                | 3.107232505953859   |
      | -3.4199518933533937 | 1.5874010519681996  | 0.9619001716077046   | 0.961900166454112   | -3.107232505953859  |
      | 1.7099759466766968  | -3.6840314986403864 | -1.0                 | NULL                | 3.6840314986403864  |
      | -3.9148676411688634 | 1.8171205928321394  | 1.1447142425533317   | 1.1447142425533317  | -3.6840314986403864 |
      | -1.0                | -4.121285299808557  | -1.9574338205844317  | -1.9574338205844317 | NULL                |
      | -4.308869380063767  | 1.0                 | -2.168702885250197   | -2.1687028717323127 | -1.0                |
      | 2.080083823051904   | -4.481404746557165  | 1.3715339700741747   | 1.3715339565548288  | 0.0                 |
      | -4.641588833612778  | 2.1544346900318834  | -1.7967017791430528  | -1.7967017988380907 | -4.481404746557165  |
      +---------------------+---------------------+----------------------+---------------------+---------------------+

CEIL

  • 構文

    bigint ceil(<value>)
  • 説明

    値を切り上げます。この関数は、入力値 value 以上の最小の整数を返します。

  • パラメーター

    value:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    BIGINT 型の値が返されます。value の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 2 です。
      select ceil(1.1);
      --戻り値は -1 です。
      select ceil(-1.1);
      --戻り値は NULL です。
      select ceil(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは値を切り上げます。

      select ceil(bigint_data) as bigint_new, ceil(double_data) as double_new, ceil(decimal_data) as decimal_new, ceil(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | -10        | 1          | 1           | 10         |
      | NULL       | 0          | 0           | -10        |
      | -1         | NULL       | 21          | 30         |
      | 4          | 1          | NULL        | -30        |
      | -50        | -1         | -1          | 50         |
      | 6          | 2          | 2           | -50        |
      | -70        | -7         | -7          | NULL       |
      | 1          | -10        | -10         | -1         |
      | -90        | 3          | 3           | 0          |
      | 10         | -5         | -5          | -90        |
      +------------+------------+-------------+------------+

CONV

  • 構文

    STRING CONV(<input>, BIGINT <from_base>, BIGINT <to_base>)
  • 説明

    この関数は、ある基数の数値を別の基数に変換し、結果を文字列として返します。

  • パラメーター

    パラメーター

    必須

    説明

    input

    はい

    STRING 型の値。

    説明
    • プロジェクトが Hive 互換モードの場合、つまり set odps.sql.hive.compatible=true; コマンドを実行した場合、BIGINT および DOUBLE 値の暗黙的な変換がサポートされます。

    • プロジェクトが Hive 互換モードでない場合、つまり set odps.sql.hive.compatible=false; コマンドを実行した場合、BIGINT および DOUBLE 値の暗黙的な変換はサポートされません。

    from_base

    はい

    基数値は、2、8、10、または 16 の 10 進整数でなければなりません。暗黙的な型変換はサポートされていません。

    to_base

    はい

    基数値は、2、8、10、または 16 の 10 進整数でなければなりません。暗黙的な型変換はサポートされていません。

  • 戻り値

    STRING 型の値が返されます。次のルールが適用されます。

    • inputfrom_base、または to_base の値が NULL の場合、NULL が返されます。

    • 変換は 64 ビット精度で実行されます。オーバーフローが発生した場合、NULL が返されます。

    • input の入力値が BIGINT または DOUBLE 型の場合、暗黙的な変換がサポートされていないため、非 Hive 互換モードでは NULL が返されます。

    • input の入力値が負の値の場合、非 Hive 互換モードでは NULL が返されます。Hive 互換モードでは、0 が返されます。

    • input の入力値が 10 進数の場合、非 Hive 互換モードでは NULL が返されます。Hive 互換モードでは、値は整数に変換されてから指定された基数に変換されます。小数部分は破棄されます。

    • 静的データの例

      --戻り値は 12 です。
      SELECT CONV('1100', 2, 10);
      --戻り値は C です。
      SELECT CONV('1100', 2, 16);
      --戻り値は 171 です。
      SELECT CONV('ab', 16, 10);
      --戻り値は AB です。
      SELECT CONV('ab', 16, 16);
      --戻り値は NULL です。
      SELECT CONV('1100', null, 10);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは値をバイナリ形式に変換します。

      SELECT CONV(bigint_data,10,2) AS bigint_new, CONV(double_data,10,2) AS double_new, CONV(decimal_data,10,2) AS decimal_new, CONV(string_data,10,2) AS string_new FROM mf_math_fun_t;

      以下の結果が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | NULL       | 0          | 0           | 1010       |
      | NULL       | NULL       | NULL        | NULL       |
      | NULL       | NULL       | 10100       | 11110      |
      | 100        | 0          | NULL        | NULL       |
      | NULL       | NULL       | NULL        | 110010     |
      | 110        | 1          | 1           | NULL       |
      | NULL       | NULL       | NULL        | NULL       |
      | 1          | NULL       | NULL        | NULL       |
      | NULL       | 10         | 10          | 0          |
      | 1010       | NULL       | NULL        | NULL       |
      +------------+------------+-------------+------------+

CORR

  • 構文

    double corr(<col1>, <col2>)
  • 説明

    2 つのデータ列のピアソン相関係数を計算します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    col1 および col2:必須。ピアソン相関係数を計算したいテーブル内の 2 つの列の名前。列は DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、または DECIMAL 型でなければなりません。col1col2 のデータ型は異なっていてもかまいません。

  • 戻り値

    DOUBLE 型の値が返されます。入力列の行に NULL 値が含まれている場合、その行は計算に使用されません。

  • サンプルデータに基づいて、次のコマンドは double_data および float_data 列のピアソン相関係数を計算します。

    select corr(double_data,float_data) from mf_math_fun_t;

    戻り値は 1.0 です。

COS

  • 構文

    double|decimal cos(<number>)
  • 説明

    number の余弦 (コサイン) を計算します。入力値はラジアン単位です。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 2.6794896585028633e-8 です。
      select cos(3.1415926/2);
      --戻り値は -0.9999999999999986 です。
      select cos(3.1415926);
      --戻り値は NULL です。
      select cos(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは余弦 (コサイン) を計算します。

      select cos(bigint_data) as bigint_new, cos(double_data) as double_new, cos(decimal_data) as decimal_new, cos(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +---------------------+--------------------+----------------------+---------------------+
      | bigint_new          | double_new         | decimal_new          | string_new          |
      +---------------------+--------------------+----------------------+---------------------+
      | -0.8390715290764524 | 0.8653239416229412 | 0.8653239416229412   | -0.8390715290764524 |
      | NULL                | 0.9950041652780258 | 0.9950041652780258   | -0.8390715290764524 |
      | 0.5403023058681398  | NULL               | -0.02964340851507803 | 0.15425144988758405 |
      | -0.6536436208636119 | 0.6294120265736969 | NULL                 | 0.15425144988758405 |
      | 0.9649660284921133  | 0.5403023058681398 | 0.5403023058681398   | 0.9649660284921133  |
      | 0.960170286650366   | 0.0707372016677029 | 0.0707372016677029   | 0.9649660284921133  |
      | 0.6333192030862999  | 0.3466353178350258 | 0.3466353178350258   | NULL                |
      | 0.5403023058681398  | -0.7142656520272003| -0.7142656520272003  | 0.5403023058681398  |
      | -0.4480736161291701 | -0.8464080412157756| -0.8464080412157756  | 1.0                 |
      | -0.8390715290764524 | 0.8855195169413189 | 0.8855195169413189   | -0.4480736161291701 |
      +---------------------+--------------------+----------------------+---------------------+

COSH

  • 構文

    double|decimal cosh(<number>)
  • 説明

    number の双曲線余弦 (ハイパーボリックコサイン) を計算します。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 2.5091784169949913 です。
      select cosh(3.1415926/2);
      --戻り値は NULL です。
      select cosh(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは双曲線余弦 (ハイパーボリックコサイン) を計算します。

      select cosh(bigint_data) as bigint_new, cosh(double_data) as double_new, cosh(decimal_data) as decimal_new, cosh(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +-----------------------+--------------------+--------------------+----------------------+
      | bigint_new            | double_new         | decimal_new        | string_new           |
      +-----------------------+--------------------+--------------------+----------------------+
      | 11013.232920103324    | 1.1410071063729532 | 1.1410071063729532 | 11013.232920103324   |
      | NULL                  | 1.0050041680558035 | 1.0050041680558035 | 11013.232920103324   |
      | 1.5430806348152437    | NULL               | 380445243.96844625 | 5343237290762.231    |
      | 27.308232836016487    | 1.42289270202111   | NULL               | 5343237290762.231    |
      | 2.592352764293536e21  | 1.5430806348152437 | 1.5430806348152437 | 2.592352764293536e21 |
      | 201.7156361224559     | 2.352409615243247  | 2.352409615243247  | 2.592352764293536e21 |
      | 1.2577193354595834e30 | 904.0214837702166  | 904.0214837702166  | NULL                 |
      | 1.5430806348152437    | 13451.593055733929 | 13451.593055733929 | 1.5430806348152437   |
      | 6.102016471589204e38  | 6.636456081840602  | 6.636456081840602  | 1.0                  |
      | 11013.232920103324    | 165.151293732197   | 165.151293732197   | 6.102016471589204e38 |
      +-----------------------+--------------------+--------------------+----------------------+

COT

  • 構文

    double|decimal cot(<number>)
  • 説明

    number の余接 (コタンジェント) を計算します。入力値はラジアン単位です。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 2.6794896585028643E-8 です。
      select cot(3.1415926/2);
      --戻り値は NULL です。
      select cot(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは余接 (コタンジェント) を計算します。

      select cot(bigint_data) as bigint_new, cot(double_data) as double_new, cot(decimal_data) as decimal_new, cot(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +-----------------------+---------------------+---------------------+----------------------+
      | bigint_new            | double_new          | decimal_new         | string_new           |
      +-----------------------+---------------------+---------------------+----------------------+
      | -1.54235104535692     | 1.7264594764178474  | 1.7264594764178474  | 1.54235104535692     |
      | NULL                  | -9.966644423259238  | -9.966644423259238  | -1.54235104535692    |
      | -0.6420926159343308   | NULL                | -0.02965644140592836| -0.15611995216165922 |
      | 0.8636911544506167    | 0.8099792954471944  | NULL                | 0.15611995216165922  |
      | 3.6778144508505695    | -0.6420926159343308 | -0.6420926159343308 | -3.6778144508505695  |
      | -3.436353004180128    | 0.07091484430265245 | 0.07091484430265245 | 3.6778144508505695   |
      | -0.8183574478651038   | -0.36954725630901636| -0.36954725630901636| NULL                 |
      | 0.6420926159343308    | -1.0205622016180353 | -1.0205622016180353 | -0.6420926159343308  |
      | 0.5012027833801532    | -1.5893944776331337 | -1.5893944776331337 | 1.0                  |
      | 1.54235104535692      | 1.9059736612916494  | 1.9059736612916494  | 0.5012027833801532   |
      +-----------------------+---------------------+---------------------+----------------------+

DEGREES

  • 構文

    double degrees(<number>) 
  • 説明

    値をラジアンから度に変換します。

  • パラメーター

    number:必須。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、または STRING 型の値。これは MaxCompute V2.0 の拡張関数です。

  • 戻り値

    DOUBLE 型の値が返されます。number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 90.0 です。
      select degrees(1.5707963267948966);
      --戻り値は 0.0 です。
      select degrees(0);
      --戻り値は NULL です。
      select degrees(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドはすべての列に対応する度を取得します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select degrees(int_data) as int_new, degrees(bigint_data) as bigint_new, degrees(double_data) as double_new, degrees(decimal_data) as decimal_new, degrees(float_data) as float_new, degrees(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
      | int_new             | bigint_new          | double_new          | decimal_new         | float_new           | string_new          |
      +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
      | NULL                | -572.9577951308232  | 30.08028424436822   | 30.08028424436822   | 30.080282878330387  | 572.9577951308232   |
      | -1145.9155902616465 | NULL                | -5.729577951308232  | -5.729577951308232  | -5.729578036685597  | -572.9577951308232  |
      | 0.0                 | -57.29577951308232  | NULL                | 1171.6986910425335  | -57.29577951308232  | 1718.8733853924698  |
      | -2291.831180523293  | 229.1831180523293   | 50.99324376664326   | NULL                | 50.99324294702057   | -1718.8733853924698 |
      | 286.4788975654116   | -2864.7889756541163 | -57.29577951308232  | -57.29577951308232  | NULL                | 2864.7889756541163  |
      | -3437.7467707849396 | 343.77467707849394  | 85.94366926962348   | 85.94366926962348   | 85.94366926962348   | -2864.7889756541163 |
      | -57.29577951308232  | -4010.7045659157625 | -429.71834634811745 | -429.71834634811745 | -429.71834634811745 | NULL                |
      | -4583.662361046586  | 57.29577951308232   | -584.4169510334397  | -584.4169510334397  | -584.416940105137   | -57.29577951308232  |
      | 515.662015617741    | -5156.620156177409  | 147.8231111437524   | 147.8231111437524   | 147.82310677243132  | 0.0                 |
      | -5729.5779513082325 | 572.9577951308232   | -332.31552117587745 | -332.31552117587745 | -332.31553210418014 | -5156.620156177409  |
      +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+

E

  • 構文

    double e()
  • 説明

    e の値を返します。これは MaxCompute V2.0 の拡張関数です。

  • 戻り値

    DOUBLE 型の値が返されます。

  • --戻り値は 2.718281828459045 です。
    select e();

EXP

  • 構文

    double|decimal exp(<number>)
  • 説明

    number の指数値を計算します。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 4.810477252069109 です。
      select exp(3.1415926/2);
      --戻り値は NULL です。
      select exp(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは指数値を計算します。

      select exp(bigint_data) as bigint_new, exp(double_data) as double_new, exp(decimal_data) as decimal_new, exp(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +-------------------------+-------------------------+-------------------------+-------------------------+
      | bigint_new              | double_new              | decimal_new             | string_new              |
      +-------------------------+-------------------------+-------------------------+-------------------------+
      | 0.000045399929762484854 | 1.6904588483790914      | 1.6904588483790914      | 22026.465794806718      |
      | NULL                    | 0.9048374180359595      | 0.9048374180359595      | 0.000045399929762484854 |
      | 0.36787944117144233     | NULL                    | 760890487.9368925       | 10686474581524.463      |
      | 54.598150033144236      | 2.4351296512898744      | NULL                    | 9.357622968840175e-14   |
      | 1.9287498479639178e-22  | 0.36787944117144233     | 0.36787944117144233     | 5.184705528587072e21    |
      | 403.4287934927351       | 4.4816890703380645      | 4.4816890703380645      | 1.9287498479639178e-22  |
      | 3.975449735908647e-31   | 0.0005530843701478336   | 0.0005530843701478336   | NULL                    |
      | 2.718281828459045       | 0.000037170318684126734 | 0.000037170318684126734 | 0.36787944117144233     |
      | 8.194012623990515e-40   | 13.197138159658358      | 13.197138159658358      | 1.0                     |
      | 22026.465794806718      | 0.0030275547453758153   | 0.0030275547453758153   | 8.194012623990515e-40   |
      +-------------------------+-------------------------+-------------------------+-------------------------+

FACTORIAL

  • 構文

    bigint factorial(<number>)
  • 説明

    number の階乗を返します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    number:必須。 BIGINT、INT、SMALLINT、または TINYINT 型の値。値は [0, 20] の範囲でなければなりません。

  • 戻り値

    BIGINT 型の値が返されます。次のルールが適用されます。

    • number の値が 0 の場合、1 が返されます。

    • number の値が NULL または [0, 20] の範囲にない場合、NULL が返されます。

    • 静的データの例

      --戻り値は 120 です。 5! = 5 × 4 × 3 × 2 × 1 = 120
      select factorial(5); 
      --戻り値は 1 です。
      select factorial(0); 
      --戻り値は NULL です。
      select factorial(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは int_data および bigint_data 列の階乗を計算します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select factorial(int_data) as int_new, factorial(bigint_data) as bigint_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------+------------+
      | int_new    | bigint_new |
      +------------+------------+
      | NULL       | NULL       |
      | NULL       | NULL       |
      | 1          | NULL       |
      | NULL       | 24         |
      | 120        | NULL       |
      | NULL       | 720        |
      | NULL       | NULL       |
      | NULL       | 1          |
      | 362880     | NULL       |
      | NULL       | 3628800    |
      +------------+------------+

FILTER

  • 構文

    array<T> filter(array<T> <a>, function<T,boolean> <func>)
  • パラメーター

    • a:必須。 ARRAY 配列。array<T>T は ARRAY 配列の要素のデータ型を指し、配列内の要素は任意の型にすることができます。

    • func:必須。a の要素をフィルター処理するために使用される関数 (ビルトイン関数またはユーザー定義関数) または式。その入力パラメーターの型は a の要素のデータ型と一致する必要があり、出力結果のデータ型は BOOLEAN である必要があります。

  • 戻り値

    戻り値は ARRAY 型です。

  • --戻り値は [2, 3] です。
    select filter(array(1, 2, 3), x -> x > 1);
    説明

    Lambda 関数 -> の詳細については、「Lambda functions」をご参照ください。

FLOOR

  • 構文

    bigint floor(<number>)
  • 説明

    値を切り捨てます。この関数は、number 以下の最大の整数を返します。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    BIGINT 型の値が返されます。number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 1 です。
      select floor(1.2);
      --戻り値は 0 です。
      select floor(0.1);
      --戻り値は -2 です。
      select floor(-1.2);
      --戻り値は -1 です。
      select floor(-0.1);
      --戻り値は 0 です。
      select floor(0.0);
      --戻り値は 0 です。
      select floor(-0.0);
      --戻り値は NULL です。
      select floor(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは値を切り捨てます。

      select floor(bigint_data) as bigint_new, floor(double_data) as double_new, floor(decimal_data) as decimal_new, floor(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | -10        | 0          | 0           | 10         |
      | NULL       | -1         | -1          | -10        |
      | -1         | NULL       | 20          | 30         |
      | 4          | 0          | NULL        | -30        |
      | -50        | -1         | -1          | 50         |
      | 6          | 1          | 1           | -50        |
      | -70        | -8         | -8          | NULL       |
      | 1          | -11        | -11         | -1         |
      | -90        | 2          | 2           | 0          |
      | 10         | -6         | -6          | -90        |
      +------------+------------+-------------+------------+

FORMAT_NUMBER

  • 構文

    string format_number(float|double|decimal <expr1>, <expr2>)
  • 説明

    数値を指定された形式の文字列に変換します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    • expr1:必須。フォーマットするデータ。値は DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、または STRING 型にすることができます。

    • expr2:必須。変換先の形式。保持する小数点以下の桁数を指定できます。また、#,###,###.## のような形式の説明を指定することもできます。

  • 戻り値

    STRING 型の値が返されます。次のルールが適用されます。

    • expr2 > 0 の場合、値は指定された小数点以下の桁数に四捨五入されます。

    • expr2 = 0 の場合、小数点や小数部分は含まれません。

    • expr2 < 0 または expr2 > 340 の場合、エラーが返されます。

    • expr1 または expr2 の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 5.230 です。
      select format_number(5.230134523424545456,3);
      --戻り値は 12,332.123 です。
      select format_number(12332.123456, '#,###,###,###.###');
      --戻り値は NULL です。
      select format_number(null,3);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドはすべての列に対して指定された小数点以下の桁数を保持します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select format_number(int_data, 1) as int_new, format_number(bigint_data, 1) as bigint_new, format_number(double_data, 2) as double_new, format_number(decimal_data, 1) as decimal_new, format_number(float_data, 0) as float_new, format_number(string_data, 1) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +---------+------------+------------+-------------+-----------+------------+
      | int_new | bigint_new | double_new | decimal_new | float_new | string_new |
      +---------+------------+------------+-------------+-----------+------------+
      | NULL    | -10.0      | 0.53       | 0.5         | 1         | 10.0       |
      | -20.0   | NULL       | -0.10      | -0.1        | -0        | -10.0      |
      | 0.0     | -1.0       | NULL       | 20.5        | -1        | 30.0       |
      | -40.0   | 4.0        | 0.89       | NULL        | 1         | -30.0      |
      | 5.0     | -50.0      | -1.00      | -1.0        | NULL      | 50.0       |
      | -60.0   | 6.0        | 1.50       | 1.5         | 2         | -50.0      |
      | -1.0    | -70.0      | -7.50      | -7.5        | -8        | NULL       |
      | -80.0   | 1.0        | -10.20     | -10.2       | -10       | -1.0       |
      | 9.0     | -90.0      | 2.58       | 2.6         | 3         | 0.0        |
      | -100.0  | 10.0       | -5.80      | -5.8        | -6        | -90.0      |
      +---------+------------+------------+-------------+-----------+------------+

HEX

  • 構文

    string hex(<number>) 
  • 説明

    数値または文字列を 16 進数形式に変換します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    number:必須。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、または STRING 型の値。

  • 戻り値

    STRING 型の値が返されます。次のルールが適用されます。

    • number の値が 0 または NULL でない場合、STRING 型の値が返されます。

    • number の値が 0 の場合、0 が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 0 です。
      select hex(0);
      --戻り値は 616263 です。
      select hex('abc');
      --戻り値は 11 です。
      select hex(17);
      --戻り値は 3137 です。
      select hex('17');
      --エラーが返されます。
      select hex(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドはすべての列を 16 進数形式に変換します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select hex(int_data) as int_new, hex(bigint_data) as bigint_new, hex(double_data) as double_new, hex(decimal_data) as decimal_new, hex(float_data) as float_new, hex(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------------+------------------+------------+-------------+------------+------------+
      | int_new          | bigint_new       | double_new | decimal_new | float_new  | string_new |
      +------------------+------------------+------------+-------------+------------+------------+
      | NULL             | FFFFFFFFFFFFFFF6 | 302E353235 | 302E353235  | 302E353235 | 3130       |
      | FFFFFFFFFFFFFFEC | NULL             | 2D302E31   | 2D302E31    | 2D302E31   | 2D3130     |
      | 0                | FFFFFFFFFFFFFFFF | NULL       | 32302E3435  | 2D31       | 3330       |
      | FFFFFFFFFFFFFFD8 | 4                | 302E3839   | NULL        | 302E3839   | 2D3330     |
      | 5                | FFFFFFFFFFFFFFCE | 2D312E30   | 2D31        | NULL       | 3530       |
      | FFFFFFFFFFFFFFC4 | 6                | 312E35     | 312E35      | 312E35     | 2D3530     |
      | FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFBA | 2D372E35   | 2D372E35    | 2D372E35   | NULL       |
      | FFFFFFFFFFFFFFB0 | 1                | 2D31302E32 | 2D31302E32  | 2D31302E32 | 2D31       |
      | 9                | FFFFFFFFFFFFFFA6 | 322E3538   | 322E3538    | 322E3538   | 30         |
      | FFFFFFFFFFFFFF9C | A                | 2D352E38   | 2D352E38    | 2D352E38   | 2D3930     |
      +------------------+------------------+------------+-------------+------------+------------+

ISNAN

  • 構文

    boolean isnan(<expr>)
  • 説明

    expr の値が NaN かどうかをチェックします。

  • パラメーター

    expr:必須。 DOUBLE 型の値。入力値が STRING、BIGINT、または DECIMAL 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    • expr の値が NaN の場合、True が返されます。それ以外の場合は、False が返されます。

    • expr の値が NULL の場合、False が返されます。

  • --戻り値は False です。
    SELECT isnan(100.1);

LN

  • 構文

    double|decimal ln(<number>)
  • 説明

    number の自然対数を計算します。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が負の数または 0 の場合、NULL が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 1.144729868791239 です。
      select ln(3.1415926);
      --戻り値は NULL です。
      select ln(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは自然対数を計算します。

      select ln(bigint_data) as bigint_new, ln(double_data) as double_new, ln(decimal_data) as decimal_new, ln(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +--------------------+----------------------+---------------------+---------------------+
      | bigint_new         | double_new           | decimal_new         | string_new          |
      +--------------------+----------------------+---------------------+---------------------+
      | NULL               | -0.6443570163905132  | -0.6443570163905132 | 2.302585092994046   |
      | NULL               | NULL                 | NULL                | NULL                |
      | NULL               | NULL                 | 3.017982882488811   | 3.4011973816621555  |
      | 1.3862943611198906 | -0.11653381625595151 | NULL                | NULL                |
      | NULL               | NULL                 | NULL                | 3.912023005428146   |
      | 1.791759469228055  | 0.4054651081081644   | 0.4054651081081644  | NULL                |
      | NULL               | NULL                 | NULL                | NULL                |
      | 0.0                | NULL                 | NULL                | NULL                |
      | NULL               | 0.9477893989335261   | 0.9477893989335261  | NULL                |
      | 2.302585092994046  | NULL                 | NULL                | NULL                |
      +--------------------+----------------------+---------------------+---------------------+

LOG

  • 構文

    double log(<base>, <x>)
  • 説明

    base を底とする x の対数を計算します。

  • パラメーター

    • base:必須。底。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

    • x:必須。対数を計算したい値。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE 型の値が返されます。次のルールが適用されます。

    • base または x の値が NULL の場合、NULL が返されます。

    • base または x の値が負の数または 0 の場合、NULL が返されます。

    • base の値が 1 の場合、ゼロ除算エラーが発生するため、NULL が返されます。

    • 静的データの例

      --戻り値は 4.0 です。
      select log(2, 16);
      --戻り値は NULL です。
      select log(2, null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは列の 2 を底とする対数を計算します。

      select log(2,bigint_data) as bigint_new, log(2,double_data) as double_new, log(2,decimal_data) as decimal_new, log(2,string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +--------------------+----------------------+--------------------+--------------------+
      | bigint_new         | double_new           | decimal_new        | string_new         |
      +--------------------+----------------------+--------------------+--------------------+
      | NULL               | -0.929610672108602   | -0.929610672108602 | 3.3219280948873626 |
      | NULL               | NULL                 | NULL               | NULL               |
      | NULL               | NULL                 | 4.354028938054387  | 4.906890595608519  |
      | 2.0                | -0.16812275880832692 | NULL               | NULL               |
      | NULL               | NULL                 | NULL               | 5.643856189774724  |
      | 2.584962500721156  | 0.5849625007211562   | 0.5849625007211562 | NULL               |
      | NULL               | NULL                 | NULL               | NULL               |
      | 0.0                | NULL                 | NULL               | NULL               |
      | NULL               | 1.3673710656485296   | 1.3673710656485296 | NULL               |
      | 3.3219280948873626 | NULL                 | NULL               | NULL               |
      +--------------------+----------------------+--------------------+--------------------+

LOG10

  • 構文

    double log10(<number>)
  • 説明

    number の 10 を底とする対数を返します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    number:必須。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、または STRING 型の値。

  • 戻り値

    DOUBLE 型の値が返されます。number の値が 0、負の数、または NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は NULL です。
      select log10(null);
      --戻り値は NULL です。
      select log10(0);
      --戻り値は 0.9030899869919435 です。
      select log10(8);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドはすべての列の 10 を底とする対数を計算します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select log10(int_data) as int_new, log10(bigint_data) as bigint_new, log10(double_data) as double_new, log10(decimal_data) as decimal_new, log10(float_data) as float_new, log10(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+
      | int_new            | bigint_new         | double_new          | decimal_new         | float_new             | string_new         |
      +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+
      | NULL               | NULL               | -0.2798406965940431 | -0.2798406965940431 | -0.27984071631668606  | 1.0                |
      | NULL               | NULL               | NULL                | NULL                | NULL                  | NULL               |
      | NULL               | NULL               | NULL                | 1.3106933123433606  | NULL                  | 1.4771212547196624 |
      | NULL               | 0.6020599913279623 | -0.0506099933550872 | NULL                | -0.050610000335573106 | NULL               |
      | 0.6989700043360187 | NULL               | NULL                | NULL                | NULL                  | 1.6989700043360185 |
      | NULL               | 0.7781512503836435 | 0.17609125905568124 | 0.17609125905568124 | 0.17609125905568124   | NULL               |
      | NULL               | NULL               | NULL                | NULL                | NULL                  | NULL               |
      | NULL               | 0.0                | NULL                | NULL                | NULL                  | NULL               |
      | 0.9542425094393249 | NULL               | 0.4116197059632301  | 0.4116197059632301  | 0.411619693120579     | NULL               |
      | NULL               | 1.0                | NULL                | NULL                | NULL                  | NULL               |
      +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+

LOG2

  • 構文

    double log2(<number>)
  • 説明

    number の 2 を底とする対数を返します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    number:必須。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、または STRING 型の値。

  • 戻り値

    DOUBLE 型の値が返されます。number の値が 0、負の数、または NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は NULL です。
      select log2(null);
      --戻り値は NULL です。
      select log2(0);
      --戻り値は 3.0 です。
      select log2(8);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドはすべての列の 2 を底とする対数を計算します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select log2(int_data) as int_new, log2(bigint_data) as bigint_new, log2(double_data) as double_new, log2(decimal_data) as decimal_new, log2(float_data) as float_new, log2(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+
      | int_new            | bigint_new         | double_new           | decimal_new        | float_new            | string_new         |
      +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+
      | NULL               | NULL               | -0.929610672108602   | -0.929610672108602 | -0.9296107376258038  | 3.3219280948873626 |
      | NULL               | NULL               | NULL                 | NULL               | NULL                 | NULL               |
      | NULL               | NULL               | NULL                 | 4.354028938054387  | NULL                 | 4.906890595608519  |
      | NULL               | 2.0                | -0.16812275880832692 | NULL               | -0.16812278199699915 | NULL               |
      | 2.321928094887362  | NULL               | NULL                 | NULL               | NULL                 | 5.643856189774724  |
      | NULL               | 2.584962500721156  | 0.5849625007211562   | 0.5849625007211562 | 0.5849625007211562   | NULL               |
      | NULL               | NULL               | NULL                 | NULL               | NULL                 | NULL               |
      | NULL               | 0.0                | NULL                 | NULL               | NULL                 | NULL               |
      | 3.1699250014423126 | NULL               | 1.3673710656485296   | 1.3673710656485296 | 1.367371022986166    | NULL               |
      | NULL               | 3.3219280948873626 | NULL                 | NULL               | NULL                 | NULL               |
      +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+

NEGATIVE

  • 構文

    TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL negative(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
  • 説明

    expr の負の値を返します。

  • パラメーター

    expr:必須。入力式。値は TINYINT、SMALLINT、INT、BIGINT、DOUBLE、または DECIMAL 型にすることができます。

  • 戻り値

    expr 式の負の値を返します。

  • --戻り値は -1 です。
    SELECT negative(1);

PI

  • 構文

    double pi()
  • 説明

    π の値を返します。これは MaxCompute V2.0 の拡張関数です。

  • 戻り値

    DOUBLE 型の値が返されます。

  • --戻り値は 3.141592653589793 です。
    select pi();

POSITIVE

  • 構文

    TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL positive(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
  • 説明

    expr の値を返します。

  • パラメーター

    expr:必須。入力式。値は TINYINT、SMALLINT、INT、BIGINT、DOUBLE、または DECIMAL 型にすることができます。

  • 戻り値

    expr 式の値を返します。

  • --戻り値は 1 です。
    SELECT positive(1);

POW

  • 構文

    double|decimal pow(<x>, <y>)
  • 説明

    xy 乗、つまり x^y の値を計算します。

  • パラメーター

    • x:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

    • y:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • x または y が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • x または y が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • x または y の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 65536.0 です。
      select pow(2, 16);
      --戻り値は NULL です。
      select pow(2, null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは列の値を 2 乗します。

      select pow(bigint_data, 2) as bigint_new, pow(double_data, 2) as double_new, pow(decimal_data, 2) as decimal_new, pow(string_data, 2) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------+----------------------+----------------------+------------+
      | bigint_new | double_new           | decimal_new          | string_new |
      +------------+----------------------+----------------------+------------+
      | 100.0      | 0.275625             | 0.275625             | 100.0      |
      | NULL       | 0.010000000000000002 | 0.010000000000000002 | 100.0      |
      | 1.0        | NULL                 | 418.2025             | 900.0      |
      | 16.0       | 0.7921               | NULL                 | 900.0      |
      | 2500.0     | 1.0                  | 1.0                  | 2500.0     |
      | 36.0       | 2.25                 | 2.25                 | 2500.0     |
      | 4900.0     | 56.25                | 56.25                | NULL       |
      | 1.0        | 104.03999999999999   | 104.03999999999999   | 1.0        |
      | 8100.0     | 6.6564000000000005   | 6.6564000000000005   | 0.0        |
      | 100.0      | 33.64                | 33.64                | 8100.0     |
      +------------+----------------------+----------------------+------------+

RADIANS

  • 構文

    double radians(<number>)
  • 説明

    値を度からラジアンに変換します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    number:必須。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、または STRING 型の値。

  • 戻り値

    DOUBLE 型の値が返されます。number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 1.5707963267948966 です。
      select radians(90);
      --戻り値は 0.0 です。
      select radians(0);
      --戻り値は NULL です。
      select radians(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドはすべての列をラジアンに変換します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select radians(int_data) as int_new, radians(bigint_data) as bigint_new, radians(double_data) as double_new, radians(decimal_data) as decimal_new, radians(float_data) as float_new, radians(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+
      | int_new               | bigint_new            | double_new             | decimal_new            | float_new              | string_new            |
      +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+
      | NULL                  | -0.17453292519943295  | 0.00916297857297023    | 0.00916297857297023    | 0.009162978156851308   | 0.17453292519943295   |
      | -0.3490658503988659   | NULL                  | -0.0017453292519943296 | -0.0017453292519943296 | -0.0017453292780017621 | -0.17453292519943295  |
      | 0.0                   | -0.017453292519943295 | NULL                   | 0.3569198320328404     | -0.017453292519943295  | 0.5235987755982988    |
      | -0.6981317007977318   | 0.06981317007977318   | 0.015533430342749534   | NULL                   | 0.015533430093078181   | -0.5235987755982988   |
      | 0.08726646259971647   | -0.8726646259971648   | -0.017453292519943295  | -0.017453292519943295  | NULL                   | 0.8726646259971648    |
      | -1.0471975511965976   | 0.10471975511965977   | 0.02617993877991494    | 0.02617993877991494    | 0.02617993877991494    | -0.8726646259971648   |
      | -0.017453292519943295 | -1.2217304763960306   | -0.1308996938995747    | -0.1308996938995747    | -0.1308996938995747    | NULL                  |
      | -1.3962634015954636   | 0.017453292519943295  | -0.17802358370342158   | -0.17802358370342158   | -0.17802358037447025   | -0.017453292519943295 |
      | 0.15707963267948966   | -1.5707963267948966   | 0.045029494701453704   | 0.045029494701453704   | 0.04502949336987316    | 0.0                   |
      | -1.7453292519943295   | 0.17453292519943295   | -0.10122909661567112   | -0.10122909661567112   | -0.10122909994462247   | -1.5707963267948966   |
      +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+

RAND

  • 構文

    double rand(bigint <seed>)
  • 説明

    0 から 1 の範囲の DOUBLE 型の乱数を返します。

  • パラメーター

    seed:任意。 BIGINT 型の値。シードは乱数シーケンスの初期値を決定します。

    説明

    seed を使用して乱数シーケンスを指定できます。seed が指定されると、この関数の戻り値は固定されます。実行環境と seed の値が同じままであれば、戻り値は同じです。異なる結果を得るには、seed の値を変更する必要があります。

    SQL ステートメントの前に次のパラメーターを追加できます。デフォルト値は false です。

    set odps.sql.executionengine.enable.rand.time.seed=true|false;
    • このパラメーターが false に設定されている場合、RAND 関数は現在のインスタンス ID を乱数の初期 seed として使用し、関数のべき等性を保証します。

    • このパラメーターが true に設定されている場合、RAND 関数は現在のシステム時刻を乱数の初期 seed として使用します。ただし、RAND 関数はもはやべき等ではなく、シャッフルキーとして使用できません。これにより、関数を再度実行すると異なる結果が生じます。

  • 戻り値

    DOUBLE 型の値が返されます。

  • --戻り値は 4.7147460303803655E-4 です。
    select rand();
    --戻り値は 0.7308781907032909 です。
    select rand(1);

ROUND

  • 構文

    double|decimal round(<number>[, bigint <decimal_places>])
  • 説明

    値を指定された小数点以下の桁数に四捨五入します。

  • パラメーター

    • number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

    • decimal_places:任意。 BIGINT 型の定数。このパラメーターは、値を四捨五入する小数点以下の桁数を指定します。このパラメーターを省略すると、値は最も近い整数に四捨五入されます。デフォルト値は 0 です。

      説明

      decimal_places の値は負の数にすることができます。値が負の場合、関数は小数点の左側の桁を四捨五入し、小数部分は保持しません。decimal_places の値が整数部分の長さより大きい場合、0 が返されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • decimal_places のデータ型が BIGINT でない場合、エラーが返されます。

    • number または decimal_places の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 125.0 です。
      select round(125.315);
      --戻り値は 125.3 です。
      select round(125.315, 1);
      --戻り値は 125.32 です。
      select round(125.315, 2);
      --戻り値は 125.315 です。
      select round(125.315, 3);
      --戻り値は -125.32 です。
      select round(-125.315, 2);
      --戻り値は 100.0 です。
      select round(123.345, -2);
      --戻り値は NULL です。
      select round(null);
      --戻り値は 123.345 です。
      select round(123.345, 4);
      --戻り値は 0.0 です。
      select round(123.345, -4);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは列の値を指定された小数点以下の桁数に四捨五入します。

      select round(bigint_data, 1) as bigint_new, round(double_data, 2) as double_new, round(decimal_data, 1) as decimal_new, round(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | -10.0      | 0.53       | 0.5         | 10.0       |
      | NULL       | -0.1       | -0.1        | -10.0      |
      | -1.0       | NULL       | 20.5        | 30.0       |
      | 4.0        | 0.89       | NULL        | -30.0      |
      | -50.0      | -1.0       | -1          | 50.0       |
      | 6.0        | 1.5        | 1.5         | -50.0      |
      | -70.0      | -7.5       | -7.5        | NULL       |
      | 1.0        | -10.2      | -10.2       | -1.0       |
      | -90.0      | 2.58       | 2.6         | 0.0        |
      | 10.0       | -5.8       | -5.8        | -90.0      |
      +------------+------------+-------------+------------+

SHIFTLEFT

  • 構文

    int shiftleft(tinyint|smallint|int <number1>, int <number2>)
    bigint shiftleft(bigint <number1>, int <number2>)
  • 説明

    左シフト (<<) を実行します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    • number1:必須。 TINYINT、SMALLINT、INT、または BIGINT 型の値。

    • number2:必須。 INT 型の値。

  • 戻り値

    INT または BIGINT 型の値が返されます。次のルールが適用されます。

    • number1 のデータ型が TINYINT、SMALLINT、INT、または BIGINT でない場合、エラーが返されます。

    • number2 のデータ型が INT でない場合、エラーが返されます。

    • number1 または number2 の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 4 です。1 の 2 進値が 2 ビット左にシフトされます (1<<2、0001 が 2 ビット左にシフトされて 0100 になります)。
      select shiftleft(1,2); 
      --戻り値は 32 です。4 の 2 進値が 3 ビット左にシフトされます (4<<3、0100 が 3 ビット左にシフトされて 100000 になります)。
      select shiftleft(4,3);
      --戻り値は NULL です。
      select shiftleft(null,2);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは int_data および bigint_data 列で左シフトを実行します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select shiftleft(int_data, 1) as int_new, shiftleft(bigint_data, 1) as bigint_new from mf_math_fun_t;

      以下の結果が返されます。

      +---------+------------+
      | int_new | bigint_new |
      +---------+------------+
      | NULL    | -20        |
      | -40     | NULL       |
      | 0       | -2         |
      | -80     | 8          |
      | 10      | -100       |
      | -120    | 12         |
      | -2      | -140       |
      | -160    | 2          |
      | 18      | -180       |
      | -200    | 20         |
      +---------+------------+

SHIFTRIGHT

  • 構文

    int shiftright(tinyint|smallint|int <number1>, int <number2>)
    bigint shiftright(bigint <number1>, int <number2>)
  • 説明

    右シフト (>>) を実行します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    • number1:必須。 TINYINT、SMALLINT、INT、または BIGINT 型の値。

    • number2:必須。 INT 型の値。

  • 戻り値

    INT または BIGINT 型の値が返されます。次のルールが適用されます。

    • number1 のデータ型が TINYINT、SMALLINT、INT、または BIGINT でない場合、エラーが返されます。

    • number2 のデータ型が INT でない場合、エラーが返されます。

    • number1 または number2 の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 1 です。4 の 2 進値が 2 ビット右にシフトされます (4>>2、0100 が 2 ビット右にシフトされて 0001 になります)。
      select shiftright(4,2);
      --戻り値は 4 です。32 の 2 進値が 3 ビット右にシフトされます (32>>3、100000 が 3 ビット右にシフトされて 0100 になります)。
      select shiftright(32,3);
      --戻り値は NULL です。
      select shiftright(null,3);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは int_data および bigint_data 列で右シフトを実行します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select shiftright(int_data, 1) as int_new, shiftright(bigint_data, 1) as bigint_new from mf_math_fun_t;

      以下の結果が返されます。

      +---------+------------+
      | int_new | bigint_new |
      +---------+------------+
      | NULL    | -5         |
      | -10     | NULL       |
      | 0       | -1         |
      | -20     | 2          |
      | 2       | -25        |
      | -30     | 3          |
      | -1      | -35        |
      | -40     | 0          |
      | 4       | -45        |
      | -50     | 5          |
      +---------+------------+

SHIFTRIGHTUNSIGNED

  • 構文

    int shiftrightunsigned(tinyint|smallint|int <number1>, int <number2>)
    bigint shiftrightunsigned(bigint <number1>, int <number2>)
  • 説明

    符号なし右シフト (>>>) を実行します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    • number1:必須。 TINYINT、SMALLINT、INT、または BIGINT 型の整数。

    • number2:必須。 INT 型の整数。

  • 戻り値

    INT または BIGINT 型の値が返されます。次のルールが適用されます。

    • number1 のデータ型が TINYINT、SMALLINT、INT、または BIGINT でない場合、エラーが返されます。

    • number2 のデータ型が INT でない場合、エラーが返されます。

    • number1 または number2 の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 2 です。8 の 2 進値が符号を考慮せずに 2 ビット右にシフトされます (8>>>2、1000 が 2 ビット右にシフトされて 0010 になります)。
      select shiftrightunsigned(8,2);
      --戻り値は 1073741820 です。-14 の 2 進値が 2 ビット右にシフトされます (-14>>>2、11111111 11111111 11111111 11110010 が 2 ビット右にシフトされて 00111111 11111111 11111111 11111100 になります)。
      select shiftrightunsigned(-14,2);
      --戻り値は NULL です。
      select shiftrightunsigned(-14,null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは int_data および bigint_data 列の符号なし右シフト値を返します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select shiftrightunsigned(int_data, 1) as int_new, shiftrightunsigned(bigint_data, 1) as bigint_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------+---------------------+
      | int_new    | bigint_new          |
      +------------+---------------------+
      | NULL       | 9223372036854775803 |
      | 2147483638 | NULL                |
      | 0          | 9223372036854775807 |
      | 2147483628 | 2                   |
      | 2          | 9223372036854775783 |
      | 2147483618 | 3                   |
      | 2147483647 | 9223372036854775773 |
      | 2147483608 | 0                   |
      | 4          | 9223372036854775763 |
      | 2147483598 | 5                   |
      +------------+---------------------+

SIGN

  • 構文

    double sign(<number>)
  • 説明

    入力パラメーターの符号を取得します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    number:必須。 DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、または STRING 型の値。

  • 戻り値

    DOUBLE 型の値が返されます。次のルールが適用されます。

    • number の値が正の数の場合、1.0 が返されます。

    • number の値が負の数の場合、-1.0 が返されます。

    • number の値が 0 の場合、0.0 が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は -1.0 です。
      select sign(-2.5);
      --戻り値は 1.0 です。
      select sign(2.5);
      --戻り値は 0.0 です。
      select sign(0);
      --戻り値は NULL です。
      select sign(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドはすべての列の符号を取得します。

      --MaxCompute V2.0 の新しいデータ型を有効にします。このコマンドは SQL ステートメントと一緒に実行する必要があります。
      set odps.sql.type.system.odps2=true;
      select sign(int_data) as int_new, sign(bigint_data) as bigint_new, sign(double_data) as double_new, sign(decimal_data) as decimal_new, sign(float_data) as float_new, sign(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------+------------+------------+-------------+------------+------------+
      | int_new    | bigint_new | double_new | decimal_new | float_new  | string_new |
      +------------+------------+------------+-------------+------------+------------+
      | NULL       | -1.0       | 1.0        | 1           | 1.0        | 1.0        |
      | -1.0       | NULL       | -1.0       | -1          | -1.0       | -1.0       |
      | 0.0        | -1.0       | NULL       | 1           | -1.0       | 1.0        |
      | -1.0       | 1.0        | 1.0        | NULL        | 1.0        | -1.0       |
      | 1.0        | -1.0       | -1.0       | -1          | NULL       | 1.0        |
      | -1.0       | 1.0        | 1.0        | 1           | 1.0        | -1.0       |
      | -1.0       | -1.0       | -1.0       | -1          | -1.0       | NULL       |
      | -1.0       | 1.0        | -1.0       | -1          | -1.0       | -1.0       |
      | 1.0        | -1.0       | 1.0        | 1           | 1.0        | 0.0        |
      | -1.0       | 1.0        | -1.0       | -1          | -1.0       | -1.0       |
      +------------+------------+------------+-------------+------------+------------+

SIN

  • 構文

    double|decimal sin(<number>)
  • 説明

    number の正弦 (サイン) を計算します。入力値はラジアン単位です。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は -0.3048106211022167 です。
      select sin(60);
      --戻り値は NULL です。
      select sin(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは列の正弦 (サイン) を計算します。

      select sin(bigint_data) as bigint_new, sin(double_data) as double_new, sin(decimal_data) as decimal_new, sin(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +----------------------+----------------------+----------------------+----------------------+
      | bigint_new           | double_new           | decimal_new          | string_new           |
      +----------------------+----------------------+----------------------+----------------------+
      | 0.5440211108893698   | 0.5012130046737979   | 0.5012130046737979   | -0.5440211108893698  |
      | NULL                 | -0.09983341664682815 | -0.09983341664682815 | 0.5440211108893698   |
      | -0.8414709848078965  | NULL                 | 0.9995605376022045   | -0.9880316240928618  |
      | -0.7568024953079282  | 0.7770717475268238   | NULL                 | 0.9880316240928618   |
      | 0.26237485370392877  | -0.8414709848078965  | -0.8414709848078965  | -0.26237485370392877 |
      | -0.27941549819892586 | 0.9974949866040544   | 0.9974949866040544   | 0.26237485370392877  |
      | -0.7738906815578891  | -0.9379999767747389  | -0.9379999767747389  | NULL                 |
      | 0.8414709848078965   | 0.6998746875935423   | 0.6998746875935423   | -0.8414709848078965  |
      | -0.8939966636005579  | 0.5325349075556212   | 0.5325349075556212   | 0.0                  |
      | -0.5440211108893698  | 0.46460217941375737  | 0.46460217941375737  | -0.8939966636005579  |
      +----------------------+----------------------+----------------------+----------------------+

SINH

  • 構文

    double|decimal sinh(<number>)
  • 説明

    number の双曲線正弦 (ハイパーボリックサイン) を計算します。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 5.343237290762231E12 です。
      select sinh(30);
      --戻り値は NULL です。
      select sinh(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは列の双曲線正弦 (ハイパーボリックサイン) を計算します。

      select sinh(bigint_data) as bigint_new, sinh(double_data) as double_new, sinh(decimal_data) as decimal_new, sinh(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------------------+----------------------+----------------------+-----------------------+
      | bigint_new             | double_new           | decimal_new          | string_new            |
      +------------------------+----------------------+----------------------+-----------------------+
      | -11013.232874703393    | 0.5494517420061382   | 0.5494517420061382   | 11013.232874703393    |
      | NULL                   | -0.10016675001984403 | -0.10016675001984403 | -11013.232874703393   |
      | -1.1752011936438014    | NULL                 | 380445243.96844625   | 5343237290762.231     |
      | 27.28991719712775      | 1.0122369492687646   | NULL                 | -5343237290762.231    |
      | -2.592352764293536e21  | -1.1752011936438014  | -1.1752011936438014  | 2.592352764293536e21  |
      | 201.71315737027922     | 2.1292794550948173   | 2.1292794550948173   | -2.592352764293536e21 |
      | -1.2577193354595834e30 | -904.0209306858466   | -904.0209306858466   | NULL                  |
      | 1.1752011936438014     | -13451.593018563612  | -13451.593018563612  | -1.1752011936438014   |
      | -6.102016471589204e38  | 6.560682077817757    | 6.560682077817757    | 0.0                   |
      | 11013.232874703393     | -165.1482661774516   | -165.1482661774516   | -6.102016471589204e38 |
      +------------------------+----------------------+----------------------+-----------------------+

SQRT

  • 構文

    double|decimal sqrt(<number>)
  • 説明

    number の平方根を計算します。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。値は 0 より大きくなければなりません。値が 0 未満の場合、NULL が返されます。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 2.0 です。
      select sqrt(4);
      --戻り値は NULL です。
      select sqrt(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは列の平方根を計算します。

      select sqrt(bigint_data) as bigint_new, sqrt(double_data) as double_new, sqrt(decimal_data) as decimal_new, sqrt(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +--------------------+--------------------+-------------------+--------------------+
      | bigint_new         | double_new         | decimal_new       | string_new         |
      +--------------------+--------------------+-------------------+--------------------+
      | NULL               | 0.724568837309472  | 0.724568837309472 | 3.1622776601683795 |
      | NULL               | NULL               | NULL              | NULL               |
      | NULL               | NULL               | 4.522167621838006 | 5.477225575051661  |
      | 2.0                | 0.9433981132056604 | NULL              | NULL               |
      | NULL               | NULL               | NULL              | 7.0710678118654755 |
      | 2.449489742783178  | 1.224744871391589  | 1.224744871391589 | NULL               |
      | NULL               | NULL               | NULL              | NULL               |
      | 1.0                | NULL               | NULL              | NULL               |
      | NULL               | 1.606237840420901  | 1.606237840420901 | 0.0                |
      | 3.1622776601683795 | NULL               | NULL              | NULL               |
      +--------------------+--------------------+-------------------+--------------------+

TAN

  • 構文

    double|decimal tan(<number>)
  • 説明

    number の正接 (タンジェント) を計算します。入力値はラジアン単位です。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は -6.405331196646276 です。
      select tan(30);
      --戻り値は NULL です。
      select tan(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは列の正接 (タンジェント) を計算します。

      select tan(bigint_data) as bigint_new, tan(double_data) as double_new, tan(decimal_data) as decimal_new, tan(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +----------------------+----------------------+----------------------+----------------------+
      | bigint_new           | double_new           | decimal_new          | string_new           |
      +----------------------+----------------------+----------------------+----------------------+
      | -0.6483608274590866  | 0.5792200822893652   | 0.5792200822893652   | 0.6483608274590866   |
      | NULL                 | -0.10033467208545055 | -0.10033467208545055 | -0.6483608274590866  |
      | -1.5574077246549023  | NULL                 | -33.71948732190433   | -6.405331196646276   |
      | 1.1578212823495775   | 1.2345994590490046   | NULL                 | 6.405331196646276    |
      | 0.27190061199763077  | -1.5574077246549023  | -1.5574077246549023  | -0.27190061199763077 |
      | -0.29100619138474915 | 14.101419947171719   | 14.101419947171719   | 0.27190061199763077  |
      | -1.2219599181369434  | -2.706013866772691   | -2.706013866772691   | NULL                 |
      | 1.5574077246549023   | -0.979852083895097   | -0.979852083895097   | -1.5574077246549023  |
      | 1.995200412208242    | -0.6291704256385503  | -0.6291704256385503  | 0.0                  |
      | 0.6483608274590866   | 0.5246662219468002   | 0.5246662219468002   | 1.995200412208242    |
      +----------------------+----------------------+----------------------+----------------------+

TANH

  • 構文

    double|decimal tanh(<number>)
  • 説明

    number の双曲線正接 (ハイパーボリックタンジェント) を計算します。

  • パラメーター

    number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • number の値が NULL の場合、NULL が返されます。

    • 静的データの例

      --戻り値は 1.0 です。
      select tanh(30);
      --戻り値は NULL です。
      select tanh(null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは列の双曲線正接 (ハイパーボリックタンジェント) を計算します。

      select tanh(bigint_data) as bigint_new, tanh(double_data) as double_new, tanh(decimal_data) as decimal_new, tanh(string_data) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +---------------------+----------------------+----------------------+---------------------+
      | bigint_new          | double_new           | decimal_new          | string_new          |
      +---------------------+----------------------+----------------------+---------------------+
      | -0.9999999958776927 | 0.48154979836430806  | 0.48154979836430806  | 0.9999999958776927  |
      | NULL                | -0.09966799462495582 | -0.09966799462495582 | -0.9999999958776927 |
      | -0.7615941559557649 | NULL                 | 1.0                  | 1.0                 |
      | 0.999329299739067   | 0.7113937318189625   | NULL                 | -1.0                |
      | -1.0                | -0.7615941559557649  | -0.7615941559557649  | 1.0                 |
      | 0.9999877116507956  | 0.9051482536448664   | 0.9051482536448664   | -1.0                |
      | -1.0                | -0.9999993881955461  | -0.9999993881955461  | NULL                |
      | 0.7615941559557649  | -0.9999999972367348  | -0.9999999972367348  | -0.7615941559557649 |
      | -1.0                | 0.9885821584459533   | 0.9885821584459533   | 0.0                 |
      | 0.9999999958776927  | -0.9999816679925603  | -0.9999816679925603  | -1.0                |
      +---------------------+----------------------+----------------------+---------------------+

TRUNC

  • 構文

    double|decimal trunc(<number>[, bigint <decimal_places>])
  • 説明

    入力値 number を指定された小数点以下の桁数に切り捨てます。

    説明

    Hive 互換モードでは、この関数は数学関数ではなく、日付変換に使用されます。対応する日付関数の詳細については、「DATETRUNC」をご参照ください。MaxCompute プロジェクトのデータ型バージョンは必要に応じて設定できます。データ型バージョンの詳細については、「MaxCompute V2.0 のデータ型エディション」をご参照ください。

  • パラメーター

    • number:必須。 DOUBLE または DECIMAL 型の値。入力値が STRING または BIGINT 型の場合、計算のために暗黙的に DOUBLE 型の値に変換されます。

    • decimal_places:任意。 BIGINT 型の定数。このパラメーターは、値を切り捨てる小数点以下の桁数を指定します。このパラメーターを省略すると、値は最も近い整数に切り捨てられます。decimal_places の値は負の数にすることができます。値が負の数の場合、関数は小数点の左側から切り捨て、小数部分は保持しません。decimal_places の値が整数部分の長さより大きい場合、0 が返されます。

  • 戻り値

    DOUBLE または DECIMAL 型の値が返されます。次のルールが適用されます。

    • number が DOUBLE または DECIMAL 型の場合、対応する型の値が返されます。

    • number が STRING または BIGINT 型の場合、DOUBLE 型の値が返されます。

    • decimal_places のデータ型が BIGINT でない場合、エラーが返されます。

    • number または decimal_places の値が NULL の場合、NULL が返されます。

    説明
    • DOUBLE 型の値が返される場合、結果が期待どおりにならないことがあります。たとえば、trunc(125.815,1) です。この DOUBLE 型の表示の問題は、すべてのシステムに存在します。

    • 切り捨てられた部分はゼロで埋められます。

    • 静的データの例

      --戻り値は 125.0 です。
      select trunc(125.815,0);
      --戻り値は 125.80000000000001 です。
      select trunc(125.815,1);
      --戻り値は 125.81 です。
      select trunc(125.815,2);
      --戻り値は 125.815 です。
      select trunc(125.815,3);
      --戻り値は -125.81 です。
      select trunc(-125.815,2);
      --戻り値は 120.0 です。
      select trunc(125.815,-1);
      --戻り値は 100.0 です。
      select trunc(125.815,-2);
      --戻り値は 0.0 です。
      select trunc(125.815,-3);
      --戻り値は 123.345 です。
      select trunc(123.345,4);
      --戻り値は 0.0 です。
      select trunc(123.345,-4);
      --戻り値は NULL です。
      select trunc(123.345,null);
    • テーブルデータの例

      サンプルデータに基づいて、次のコマンドは列の値を指定された小数点以下の桁数に切り捨てます。

      select trunc(bigint_data, 1) as bigint_new, trunc(double_data,1) as double_new, trunc(decimal_data, 1) as decimal_new, trunc(string_data, 1) as string_new from mf_math_fun_t;

      以下の結果が返されます。

      +------------+---------------------+-------------+------------+
      | bigint_new | double_new          | decimal_new | string_new |
      +------------+---------------------+-------------+------------+
      | -10.0      | 0.5                 | 0.5         | 10.0       |
      | NULL       | -0.1                | -0.1        | -10.0      |
      | -1.0       | NULL                | 20.4        | 30.0       |
      | 4.0        | 0.8                 | NULL        | -30.0      |
      | -50.0      | -1.0                | -1          | 50.0       |
      | 6.0        | 1.5                 | 1.5         | -50.0      |
      | -70.0      | -7.5                | -7.5        | NULL       |
      | 1.0        | -10.200000000000001 | -10.2       | -1.0       |
      | -90.0      | 2.5                 | 2.5         | 0.0        |
      | 10.0       | -5.800000000000001  | -5.8        | -90.0      |
      +------------+---------------------+-------------+------------+

UNHEX

  • 構文

    binary unhex(string <number>)
  • 説明

    16 進数文字列で表される文字列を返します。これは MaxCompute V2.0 の拡張関数です。

  • パラメーター

    number:必須。 16 進数文字列。

  • 戻り値

    BINARY 型の値が返されます。次のルールが適用されます。

    • number の値が 0 の場合、エラーが返されます。

    • number の値が NULL の場合、NULL が返されます。

  • --戻り値は abc です。
    select unhex('616263');
    --戻り値は abc です。
    select unhex(616263);
    --戻り値は NULL です。
    select unhex(null);

WIDTH_BUCKET

  • 構文

    width_bucket(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>)
  • 説明

    この関数は、指定された最小値、最大値、およびグループ数に基づいて、指定された数の等しいサイズのグループを構築します。指定されたフィールドの値が属するグループ番号を返します。サポートされているデータ型は、MaxCompute V2.0 の BIGINT、INT、FLOAT、DOUBLE、DECIMAL、および DECIMAL(precision, scale) です。詳細については、「MaxCompute V2.0 のデータ型エディション」をご参照ください。この関数は MaxCompute V2.0 の拡張関数です。

  • パラメーター

    • expr:必須。グループ番号を決定したいフィールド。

    • min_value:必須。グループ範囲の最小値。

    • max_value:必須。グループ範囲の最大値。最大値は最小値より大きくなければなりません。

    • num_buckets:必須。グループの数。値は 0 より大きくなければなりません。

  • 戻り値

    BIGINT 型の値が返されます。値の範囲は 0 から指定されたグループ数に 1 を加えたものまでです。値は次のルールに基づいて返されます。

    • expr の値が min_value の値より小さい場合、0 が返されます。

    • expr の値が max_value の値より大きい場合、指定されたグループ数に 1 を加えた値が返されます。

    • expr の値が NULL の場合、NULL が返されます。その他の場合、フィールド値が属するグループ番号が返されます。グループ番号は次の数式を使用して計算されます:floor( num_buckets * (expr - min_value)/(max_value - min_value) + 1)

    • min_valuemax_value、または num_buckets の値が NULL の場合、NULL が返されます。

    • 例 1:入力パラメーターのいずれも NULL ではありません。サンプルコマンド:

      select key,value,width_bucket(value,100,500,5) as value_group
      from values 
          (1,99),
          (2,100),
          (3,199),
          (4,200),
          (5,499),
          (6,500),
          (7,501),
          (8,NULL)
      as t(key,value);

      以下の結果が返されます。

      +-------+--------+-------------+
      | key   | value  | value_group |
      +-------+--------+-------------+
      | 1     | 99     | 0           |
      | 2     | 100    | 1           |
      | 3     | 199    | 2           |
      | 4     | 200    | 2           |
      | 5     | 499    | 5           |
      | 6     | 500    | 6           |
      | 7     | 501    | 6           |
      | 8     | NULL   | NULL        |
      +-------+--------+-------------+
    • 例 2:入力パラメーターの 1 つが NULL です。サンプルコマンド:

      select key,value,width_bucket(value,100,500,null) as value_group
      from values
          (1,99),
          (2,100),
          (3,199),
          (4,200),
          (5,499),
          (6,500),
          (7,501),
          (8,NULL)
      as t(key,value);

      以下の結果が返されます。

      +------+-------+-------------+
      | key  | value | value_group |
      +------+-------+-------------+
      | 1    | 99    | NULL        |
      | 2    | 100   | NULL        |
      | 3    | 199   | NULL        |
      | 4    | 200   | NULL        |
      | 5    | 499   | NULL        |
      | 6    | 500   | NULL        |
      | 7    | 501   | NULL        |
      | 8    | NULL  | NULL        |
      +------+-------+-------------+

関連ドキュメント