跳到主要内容
版本: 最新版本-3.5

cast

在 JSON 类型和 SQL 类型之间转换值。

提示

所有 JSON 函数和运算符都列在导航栏和概述页面

通过生成列加速您的查询

语法

  • 从 JSON 转换为 SQL
cast(json_expr AS sql_data_type)
  • 从 SQL 转换为 JSON
cast(sql_expr AS JSON)

参数

  • json_expr: 表示要转换为 SQL 值的 JSON 值的表达式。

  • sql_data_type: 您要将 JSON 值转换为的 SQL 数据类型。仅支持 STRING、VARCHAR、CHAR、BOOLEAN、TINYINT、SMALLINT、INT、BIGINT、LARGEINT、DOUBLE 和 FLOAT 数据类型。

  • sql_expr: 表示要转换为 JSON 值的 SQL 值的表达式。此参数支持 sql_data_type 参数支持的所有 SQL 数据类型。

返回值

  • 如果您使用 cast(json_expr AS sql_data_type) 语法,则 cast 函数会返回 sql_data_type 参数指定的 SQL 数据类型的值。

  • 如果您使用 cast(sql_expr AS JSON) 语法,则 cast 函数会返回一个 JSON 值。

使用说明

  • 从 SQL 转换为 JSON

    • 如果 SQL 值超出 JSON 支持的精度,则 cast 函数会返回 NULL,以防止算术溢出。

    • 如果 SQL 值为 NULL,则 cast 函数不会将 SQL 值 NULL 转换为 NULL 的 JSON 值。返回值仍然是 NULL 的 SQL 值。

  • 从 JSON 转换为 SQL

    • cast 函数仅支持兼容的 JSON 和 SQL 数据类型之间的转换。例如,您可以将 JSON 字符串转换为 SQL 字符串。

    • cast 函数不支持不兼容的 JSON 和 SQL 数据类型之间的转换。例如,如果您将 JSON 数字转换为 SQL 字符串,则该函数会返回 NULL

    • 如果发生算术溢出,则 cast 函数会返回 NULL 的 SQL 值。

    • 如果您将 NULL 的 JSON 值转换为 SQL 值,则该函数会返回 NULL 的 SQL 值。

    • 如果您将 JSON 字符串转换为 VARCHAR 值,则该函数会返回一个不包含在双引号 (") 中的 VARCHAR 值。

示例

示例 1:将 JSON 值转换为 SQL 值。

-- Convert a JSON value to an INT value.
mysql> select cast(parse_json('{"a": 1}') -> 'a' as int);
+--------------------------------------------+
| CAST((parse_json('{"a": 1}')->'a') AS INT) |
+--------------------------------------------+
| 1 |
+--------------------------------------------+

-- Convert a JSON string to a VARCHAR value.
mysql> select cast(parse_json('"star"') as varchar);
+---------------------------------------+
| cast(parse_json('"star"') AS VARCHAR) |
+---------------------------------------+
| star |
+---------------------------------------+

-- Convert a JSON object to a VARCHAR value.
mysql> select cast(parse_json('{"star": 1}') as varchar);
+--------------------------------------------+
| cast(parse_json('{"star": 1}') AS VARCHAR) |
+--------------------------------------------+
| {"star": 1} |
+--------------------------------------------+

-- Convert a JSON array to a VARCHAR value.

mysql> select cast(parse_json('[1,2,3]') as varchar);
+----------------------------------------+
| cast(parse_json('[1,2,3]') AS VARCHAR) |
+----------------------------------------+
| [1, 2, 3] |
+----------------------------------------+

示例 2:将 SQL 值转换为 JSON 值。

-- Convert an INT value to a JSON value.
mysql> select cast(1 as json);
+-----------------+
| cast(1 AS JSON) |
+-----------------+
| 1 |
+-----------------+

-- Convert a VARCHAR value to a JSON value.
mysql> select cast("star" as json);
+----------------------+
| cast('star' AS JSON) |
+----------------------+
| "star" |
+----------------------+

-- Convert a BOOLEAN value to a JSON value.
mysql> select cast(true as json);
+--------------------+
| cast(TRUE AS JSON) |
+--------------------+
| true |
+--------------------+