cast
在 JSON 类型和 SQL 类型之间转换值。
语法
- 从 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 |
+--------------------+