0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL関数クロスリファレンス - 数値・型変換関数

Last updated at Posted at 2025-09-28

ページ: 目次 | ← 前の記事 | 次の記事 →

BigQuery、Snowflake、Treasure Data、Athena、MySQL、Oracleの数値・型変換関数について、構文の違いや注意点をまとめました。

📋 関数一覧


文字列変換

BigQuery (STRING)

CAST(expression AS STRING)

Snowflake (VARCHAR)

CAST(expression AS VARCHAR)

Treasure Data (VARCHAR)

CAST(expression AS VARCHAR)

Athena (VARCHAR)

CAST(expression AS VARCHAR)

MySQL (CHAR)

CAST(expression AS CHAR)

Oracle (VARCHAR2)

TO_CHAR(expression)

Tips

  • BigQuery: SAFE_CASTでエラー回避
  • Snowflake: TRY_CASTでエラー回避
  • Treasure Data: TRY_CASTでエラー回避
  • Athena: TRY_CASTでエラー回避
  • MySQL: CONVERT関数も使用可
  • Oracle: フォーマット指定可能

整数変換

BigQuery (INT64)

CAST(expression AS INT64)

Snowflake (NUMBER)

CAST(expression AS INTEGER)

Treasure Data (INTEGER)

CAST(expression AS INTEGER)

Athena (INTEGER)

CAST(expression AS INTEGER)

MySQL (BIGINT)

CAST(expression AS SIGNED)

Oracle (NUMBER)

TO_NUMBER(expression)

Tips

  • BigQuery: SAFE_CASTでエラー回避
  • Snowflake: TRY_CASTでエラー回避
  • Treasure Data: TRY_CASTでエラー回避
  • Athena: TRY_CASTでエラー回避
  • MySQL: UNSIGNED指定も可能
  • Oracle: フォーマット指定可能

浮動小数点変換

BigQuery (FLOAT64)

CAST(expression AS FLOAT64)

Snowflake (DOUBLE)

CAST(expression AS DOUBLE)

Treasure Data (DOUBLE)

CAST(expression AS DOUBLE)

Athena (DOUBLE)

CAST(expression AS DOUBLE)

MySQL (DOUBLE)

CAST(expression AS DOUBLE)

Oracle (NUMBER)

TO_NUMBER(expression)

Tips

  • BigQuery: NUMERIC型も使用可
  • Snowflake: FLOAT型も使用可
  • Treasure Data: REAL型も使用可
  • Athena: REAL型も使用可
  • MySQL: DECIMAL指定も可能
  • Oracle: 精度・スケール指定可

日付変換

BigQuery (DATE)

CAST(expression AS DATE)

Snowflake (DATE)

CAST(expression AS DATE)

Treasure Data (DATE)

CAST(expression AS DATE)

Athena (DATE)

CAST(expression AS DATE)

MySQL (DATE)

CAST(expression AS DATE)

Oracle (DATE)

TO_DATE(expression, format)

Tips

  • BigQuery: ISO形式など限定的。書式指定推奨
  • Snowflake: TRY_TO_DATEでエラー回避
  • Treasure Data: ISO形式など限定的。書式指定推奨
  • Athena: ISO形式など限定的。書式指定推奨
  • MySQL: STR_TO_DATEでフォーマット指定
  • Oracle: フォーマット必須

真偽値変換

BigQuery (BOOL)

CAST(expression AS BOOL)

Snowflake (BOOLEAN)

CAST(expression AS BOOLEAN)

Treasure Data (BOOLEAN)

CAST(expression AS BOOLEAN)

Athena (BOOLEAN)

CAST(expression AS BOOLEAN)

MySQL (TINYINT(1))

IF(condition, 1, 0)

Oracle (NUMBER(1))

CASE WHEN condition THEN 1 ELSE 0 END

Tips

  • BigQuery: 0/1、true/false変換
  • Snowflake: 0/1、true/false変換
  • Treasure Data: 0/1、true/false変換
  • Athena: 0/1、true/false変換
  • MySQL: BOOLEANはTINYINT(1)の別名(保存は0/1)
  • Oracle: 真偽値型はサポートなし

タイムスタンプ変換

BigQuery (TIMESTAMP)

CAST(expression AS TIMESTAMP)

Snowflake (TIMESTAMP)

CAST(expression AS TIMESTAMP)

Treasure Data (TIMESTAMP)

CAST(expression AS TIMESTAMP)

Athena (TIMESTAMP)

CAST(expression AS TIMESTAMP)

MySQL (DATETIME)

STR_TO_DATE(string, '%Y-%m-%d %H:%i:%s')

Oracle (TIMESTAMP)

TO_TIMESTAMP(string, 'YYYY-MM-DD HH24:MI:SS')

Tips

  • BigQuery: タイムゾーン付き
  • Snowflake: TRY_TO_TIMESTAMPでエラー回避
  • Treasure Data: ISO8601形式推奨
  • Athena: ISO8601形式推奨
  • MySQL: TIMESTAMPとDATETIMEの違い注意
  • Oracle: フォーマット必須

NULL判定変換

BigQuery (入力と同じ型)

IFNULL(expression, default_value)

Snowflake (入力と同じ型)

IFNULL(expression, default_value)

Treasure Data (入力と同じ型)

COALESCE(expression, default_value)

Athena (入力と同じ型)

COALESCE(expression, default_value)

MySQL (入力と同じ型)

IFNULL(expression, default_value)

Oracle (入力と同じ型)

NVL(expression, default_value)

Tips

  • BigQuery: COALESCE関数も使用可
  • Snowflake: COALESCE関数も使用可
  • Treasure Data: IFNULLは非対応
  • Athena: IFNULLは非対応
  • MySQL: COALESCE関数も使用可
  • Oracle: COALESCE関数も使用可

安全型変換関数

BigQuery (入力と同じ型)

SAFE_CAST(expression AS type)

Snowflake (入力と同じ型)

TRY_CAST(expression AS type)

Treasure Data (入力と同じ型)

TRY_CAST(expression AS type)

Athena (入力と同じ型)

TRY_CAST(expression AS type)

MySQL (入力と同じ型)

-- MySQLはTRY_CAST未対応
-- 代替: 事前バリデーション
CASE 
  WHEN expression REGEXP '^[0-9]+$' 
  THEN CAST(expression AS SIGNED)
  ELSE NULL
END

Oracle (NUMBER)

VALIDATE_CONVERSION(expression AS type)

Tips

  • BigQuery: 変換失敗時NULLを返す
  • Snowflake: 変換失敗時NULLを返す
  • Treasure Data: 変換失敗時NULLを返す
  • Athena: 変換失敗時NULLを返す
  • MySQL: MySQLはTRY_CAST未対応。事前バリデーション(REGEXP等)で防御
  • Oracle: 変換可能なら1、不可なら0を返す

四捨五入

BigQuery (NUMERIC/INT64/FLOAT64)

ROUND(numeric_expression[, digits])

Snowflake (入力と同じ型)

ROUND(numeric_expression[, digits])

Treasure Data (入力と同じ型)

ROUND(numeric_expression[, digits])

Athena (入力と同じ型)

ROUND(numeric_expression[, digits])

MySQL (入力と同じ型)

ROUND(numeric_expression[, digits])

Oracle (NUMBER)

ROUND(numeric_expression[, digits])

Tips

  • BigQuery: 桁数指定可能
  • Snowflake: 桁数指定可能
  • Treasure Data: 桁数指定可能
  • Athena: 桁数指定可能
  • MySQL: 桁数指定可能
  • Oracle: 桁数指定可能

切り上げ

BigQuery (NUMERIC/INT64/FLOAT64)

CEIL(numeric_expression)

Snowflake (入力と同じ型)

CEIL(numeric_expression)

Treasure Data (入力と同じ型)

CEIL(numeric_expression)

Athena (入力と同じ型)

CEIL(numeric_expression)

MySQL (入力と同じ型)

CEIL(numeric_expression)

Oracle (NUMBER)

CEIL(numeric_expression)

Tips

  • BigQuery: 最小の整数を返す
  • Snowflake: CEILINGも使用可
  • Treasure Data: CEILINGも使用可
  • Athena: CEILINGも使用可
  • MySQL: CEILINGも使用可
  • Oracle: 最小の整数を返す

切り捨て

BigQuery (NUMERIC/INT64/FLOAT64)

FLOOR(numeric_expression)

Snowflake (入力と同じ型)

FLOOR(numeric_expression)

Treasure Data (入力と同じ型)

FLOOR(numeric_expression)

Athena (入力と同じ型)

FLOOR(numeric_expression)

MySQL (入力と同じ型)

FLOOR(numeric_expression)

Oracle (NUMBER)

FLOOR(numeric_expression)

Tips

  • BigQuery: 最大の整数を返す
  • Snowflake: 負の数に注意
  • Treasure Data: 負の数に注意
  • Athena: 負の数に注意
  • MySQL: 負の数に注意
  • Oracle: 最大の整数を返す

切り詰め

BigQuery (NUMERIC/INT64/FLOAT64)

TRUNC(numeric_expression[, digits])

Snowflake (入力と同じ型)

TRUNC(numeric_expression[, digits])

Treasure Data (入力と同じ型)

TRUNCATE(numeric_expression[, digits])

Athena (入力と同じ型)

TRUNCATE(numeric_expression[, digits])

MySQL (入力と同じ型)

TRUNCATE(numeric_expression, digits)

Oracle (NUMBER)

TRUNC(numeric_expression[, digits])

Tips

  • BigQuery: 小数部削除
  • Snowflake: TRUNCATEも使用可
  • Treasure Data: 小数部削除
  • Athena: 小数部削除
  • MySQL: 第2引数必須
  • Oracle: 日付にも使用可能

符号

BigQuery (INT64)

SIGN(numeric_expression)

Snowflake (NUMBER)

SIGN(numeric_expression)

Treasure Data (入力と同じ型)

SIGN(numeric_expression)

Athena (入力と同じ型)

SIGN(numeric_expression)

MySQL (INT)

SIGN(numeric_expression)

Oracle (NUMBER)

SIGN(numeric_expression)

Tips

  • BigQuery: -1,0,1を返す
  • Snowflake: -1,0,1を返す
  • Treasure Data: -1,0,1を返す
  • Athena: -1,0,1を返す
  • MySQL: -1,0,1を返す
  • Oracle: -1,0,1を返す

平方根

BigQuery (FLOAT64)

SQRT(numeric_expression)

Snowflake (FLOAT)

SQRT(numeric_expression)

Treasure Data (DOUBLE)

SQRT(numeric_expression)

Athena (DOUBLE)

SQRT(numeric_expression)

MySQL (DOUBLE)

SQRT(numeric_expression)

Oracle (NUMBER)

SQRT(numeric_expression)

Tips

  • BigQuery: 負数の場合はNaN(非数値)を返す
  • Snowflake: 負数の場合はNaN(非数値)を返す
  • Treasure Data: 負の数はNaN
  • Athena: 負の数はNaN
  • MySQL: 負の数はNULL
  • Oracle: 負の数はエラー

累乗

BigQuery (FLOAT64)

POW(base, exponent)

Snowflake (NUMBER)

POWER(base, exponent)

Treasure Data (DOUBLE)

POWER(base, exponent)

Athena (DOUBLE)

POWER(base, exponent)

MySQL (DOUBLE)

POWER(base, exponent)

Oracle (NUMBER)

POWER(base, exponent)

Tips

  • BigQuery: POWERも使用可
  • Snowflake: POWも使用可
  • Treasure Data: POWも使用可
  • Athena: POWも使用可
  • MySQL: POWも使用可
  • Oracle: Oracle POWER関数は実数の累乗のみ対応。複素数は未対応

JSON変換

BigQuery (JSON)

PARSE_JSON(string_expression)

Snowflake (VARIANT)

PARSE_JSON(string_expression)

Treasure Data (JSON)

CAST(string_expression AS JSON)

Athena (JSON)

CAST(string_expression AS JSON)

MySQL (JSON)

CAST(string_expression AS JSON)

Oracle (VARCHAR2/CLOB)

JSON_QUERY(json_text, '$.path')

Tips

  • BigQuery: JSON型サポート
  • Snowflake: VARIANT型で格納
  • Treasure Data: JSON型サポート。json_extract_scalarはJSON文字列を直接引数に取る
  • Athena: json_extract_scalarは文字列を引数に取る
  • MySQL: MySQL 5.7以降
  • Oracle: JSON_QUERY/VALUEで文字列をパース。JSON_OBJECT/ARRAYは新規生成用

配列変換

BigQuery (ARRAY)

-- 通常の配列生成
['a','b','c']  -- リテラル
ARRAY<STRING>['a','b','c']  -- 型付き
-- JSON文字列から配列抽出の場合
JSON_EXTRACT_ARRAY(json_string_expression)

Snowflake (ARRAY)

CAST(expression AS ARRAY)

Treasure Data (ARRAY)

CAST(expression AS ARRAY<type>)

Athena (ARRAY)

CAST(expression AS ARRAY<type>)

MySQL (JSON)

JSON_ARRAY(elements)

Oracle (JSON)

JSON_ARRAY(elements)

Tips

  • BigQuery: 通常は配列リテラル使用。JSON文字列からの変換にはJSON_EXTRACT_ARRAY
  • Snowflake: JSON配列から変換可能
  • Treasure Data: JSON配列から変換可能
  • Athena: JSON配列から変換可能
  • MySQL: MySQL 5.7.8以降で利用可能
  • Oracle: JSON型として扱う

乱数

BigQuery (FLOAT64)

RAND()

Snowflake (FLOAT)

RANDOM()

Treasure Data (DOUBLE)

RANDOM()

Athena (DOUBLE)

RANDOM()

MySQL (DOUBLE)

RAND([seed])

Oracle (NUMBER)

DBMS_RANDOM.VALUE

Tips

  • BigQuery: 0以上1未満
  • Snowflake: 0-1の浮動小数を返す。他DBと同様
  • Treasure Data: 0以上1未満
  • Athena: 0以上1未満
  • MySQL: シード値指定可能
  • Oracle: パッケージ関数

ヒストグラム分割

BigQuery (INTEGER)

CASE WHEN代替

Snowflake (INTEGER)

WIDTH_BUCKET(expr, min_value, max_value, num_buckets)

Treasure Data (INTEGER)

width_bucket(expr, min_value, max_value, num_buckets)

Athena (INTEGER)

width_bucket(expr, min_value, max_value, num_buckets)

MySQL (INTEGER)

CASE WHEN代替

Oracle (INTEGER)

WIDTH_BUCKET(expr, min_value, max_value, num_buckets)

Tips

  • BigQuery: CASE文で代替実装
  • Snowflake: ヒストグラム分析に便利
  • Treasure Data: Presto標準関数
  • Athena: Presto標準関数
  • MySQL: CASE文で代替実装
  • Oracle: 標準統計関数

他のカテゴリ

目次に戻る


各DBのバージョンやエディションにより動作が異なる場合があります。本番環境での使用前に必ずテストしてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?