メインコンテンツまでスキップ

cast

キャスト

説明

JSON型とSQL型の間で値を変換します。

構文

  • JSONからSQLへの変換
cast(json_expr AS sql_data_type)
  • SQLからJSONへの変換
cast(sql_expr AS JSON)

パラメータ

  • json_expr:JSON値をSQL値に変換するための式。
  • sql_data_type:JSON値を変換したいSQLデータ型。STRING、VARCHAR、CHAR、BOOLEAN、TINYINT、SMALLINT、INT、BIGINT、LARGEINT、DOUBLE、FLOATデータ型のみがサポートされています。
  • sql_expr:JSON値をJSON値に変換するための式。このパラメータは、sql_data_typeパラメータでサポートされているすべてのSQLデータ型をサポートしています。

返り値

  • cast(json_expr AS sql_data_type)構文を使用する場合、キャスト関数はsql_data_typeパラメータで指定されたSQLデータ型の値を返します。
  • cast(sql_expr AS JSON)構文を使用する場合、キャスト関数はJSON値を返します。

使用上の注意

  • SQLからJSONへの変換
    • SQL値がJSONでサポートされている精度を超える場合、演算オーバーフローを防ぐために、キャスト関数はNULLを返します。
    • SQL値がNULLの場合、キャスト関数はSQL値のNULLをJSON値のNULLに変換しません。返り値は依然としてSQL値のNULLです。
  • JSONからSQLへの変換
    • キャスト関数は、互換性のあるJSONとSQLデータ型の間のみで変換をサポートしています。たとえば、JSON文字列をSQL文字列に変換することができます。
    • キャスト関数は、互換性のないJSONとSQLデータ型の間の変換をサポートしていません。たとえば、JSON数値をSQL文字列に変換すると、関数はNULLを返します。
    • 演算オーバーフローが発生した場合、キャスト関数はSQL値のNULLを返します。
    • JSON値のNULLをSQL値に変換する場合、関数はSQL値のNULLを返します。
    • JSON文字列をVARCHAR値に変換する場合、関数はダブルクォート(")で囲まれていないVARCHAR値を返します。

例1:JSON値をSQL値に変換する。

-- JSON値をINT値に変換する。
mysql> select cast(parse_json('{"a": 1}') -> 'a' as int);
+--------------------------------------------+
| CAST((parse_json('{"a": 1}')->'a') AS INT) |
+--------------------------------------------+
| 1 |
+--------------------------------------------+

-- JSON文字列をVARCHAR値に変換する。
mysql> select cast(parse_json('"star"') as varchar);
+---------------------------------------+
| cast(parse_json('"star"') AS VARCHAR) |
+---------------------------------------+
| star |
+---------------------------------------+

-- JSONオブジェクトをVARCHAR値に変換する。
mysql> select cast(parse_json('{"star": 1}') as varchar);
+--------------------------------------------+
| cast(parse_json('{"star": 1}') AS VARCHAR) |
+--------------------------------------------+
| {"star": 1} |
+--------------------------------------------+

-- JSON配列をVARCHAR値に変換する。
mysql> select cast(parse_json('[1,2,3]') as varchar);
+----------------------------------------+
| cast(parse_json('[1,2,3]') AS VARCHAR) |
+----------------------------------------+
| [1, 2, 3] |
+----------------------------------------+

例2:SQL値をJSON値に変換する。

-- INT値をJSON値に変換する。
mysql> select cast(1 as json);
+-----------------+
| cast(1 AS JSON) |
+-----------------+
| 1 |
+-----------------+

-- VARCHAR値をJSON値に変換する。
mysql> select cast("star" as json);
+----------------------+
| cast('star' AS JSON) |
+----------------------+
| "star" |
+----------------------+

-- BOOLEAN値をJSON値に変換する。
mysql> select cast(true as json);
+--------------------+
| cast(TRUE AS JSON) |
+--------------------+
| true |
+--------------------+