暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

OceanBase SQL语句JSON数据类型转换

2024-04-14
946

OceanBase 数据库支持使用 CAST 函数实现其他类型的数据和 JSON 数据类型的相互转换。

JSON 数据类型的转换规则如下表所示。

其他数据类型CAST(other_type AS JSON)CAST(JSON AS other_type)
JSON没有变化没有变化
utf8 字符类型 (包括 utf8mb4、utf8 和 ascii)字符被转换为 JSON 类型值,并验证合法性。序列化成 utf8mb4 字符串。
其他字符集类型首先转换成为 utf8mb4 字符编码,之后再按照 utf8 字符类型的描述进行转换。首先序列化成 utf8mb4 编码的字符串,之后再转换成对应字符集的字符串。
NULL返回空 JSON 类型值。不适用
其他类型只有单个的标量值会被转换为一个只具备单独值的 JSON 类型值。如果 JSON 类型值只包含一个标量值,并且与目标类型吻合,则会被转换为对应的类型,否则返回 NULL,并告警。

说明

other_type 指定除 JSON 外的其它数据类型。

如下为一些转换示例。

obclient> SELECT CAST("123" AS JSON);
+---------------------+
| CAST("123" AS JSON) |
+---------------------+
| 123                 |
+---------------------+
1 row in set 

obclient> SELECT CAST(null AS JSON);
+--------------------+
| CAST(null AS JSON) |
+--------------------+
| NULL               |
+--------------------+
1 row in set 

CREATE TABLE tj1 (c1 JSON,c2 VARCHAR(20));
INSERT INTO tj1 VALUES ('{"id": 17, "color": "red"}','apple'),('{"id": 18, "color": "yellow"}', 'banana'),('{"id": 16, "color": "orange"}','orange');
obclient> SELECT * FROM tj1 ORDER BY CAST(JSON_EXTRACT(c1, '$.id') AS UNSIGNED);
+-------------------------------+--------+
| c1                            | c2     |
+-------------------------------+--------+
| {"id": 16, "color": "orange"} | orange |
| {"id": 17, "color": "red"}    | apple  |
| {"id": 18, "color": "yellow"} | banana |
+-------------------------------+--------+
3 rows in set
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论