KingbaseES json操作符
下表列出了常用的json数据类型操作符:
| 操作符 | 操作符右侧数据类型 | 返回类型 | 描述 |
|---|---|---|---|
| -> | int | json or jsonb | 获得 JSON 数组元素(索引从 0 开始,负整数从末尾开始计) |
| -> | text | json or jsonb | 通过键获得 JSON 对象域 |
| ->> | int | text | 以text形式获得 JSON 数组元素 |
| ->> | text | text | 以text形式获得 JSON 对象域 |
| #> | text[] | json or jsonb | 获取在指定路径的 JSON 对象 |
| #>> | text[] | text | 以text形式获取在指定路径的 JSON 对象 |
| 构建测试数据 |
CREATE TABLE student (stu_id serial NOT NULL PRIMARY KEY,stu_info json NOT NULL);
INSERT INTO student (stu_info)
VALUES
(
'{
"name": "lisi",
"information":
{
"mobile_number": "13700000001",
"branch": "Computer",
"rank":12
}
}'
),
(
'{
"name": "zhangsan",
"information":
{
"mobile_number": "13700000002",
"branch": "Computer",
"rank":1
}
}'
),
(
'{
"name": "zhouxinxin",
"information":
{
"mobile_number": "13700000003",
"branch": "Car",
"rank":2
}
}'
),
(
'{
"name": "lilei",
"information":
{
"mobile_number": "13700000004",
"branch": "Civil",
"rank":6
}
}'
);
INSERT INTO student (stu_info) --数组类型的json
VALUES
(
'[{
"name": "wanwu"},
{"information":
{
"mobile_number": "13700000005",
"branch": "Computer",
"rank":11
}
}]'
)
1.使用索引来获取学生名字(返回的json类型的数据)
test=# SELECT stu_info ->0 AS StudentName FROM student;
studentname
------------------
{ +
"name": "wanwu"}
(5 行记录)
test=# SELECT stu_info ->0 ->'name' AS StudentName FROM student;
studentname
-------------
"wanwu"
(5 行记录)
2.使用json键来获取学生名字(返回的json类型的数据)
test=# SELECT stu_info -> 'name' AS StudentName FROM student;
studentname
--------------
"lisi"
"zhangsan"
"zhouxinxin"
"lilei"
(5 行记录)
3.使用json键来获取学生名字(返回的字符串类型的数据)
test=# SELECT stu_info ->> 'name' AS StudentName FROM student;
studentname
-------------
lisi
zhangsan
zhouxinxin
lilei
(5 行记录)
4.获取学生的手机号码
test=# SELECT stu_info #>> '{information,mobile_number}' AS phone FROM student;
phone
-------------
13700000001
13700000002
13700000003
13700000004
(5 行记录)
5.在where条件中使用json操作符
test=# SELECT stu_info ->> 'name' AS StudentName FROM student WHERE stu_info -> 'information' ->> 'branch' = 'Computer';
studentname
-------------
lisi
zhangsan
(2 行记录)
test=# SELECT stu_info ->> 'name' AS StudentName FROM student WHERE stu_info #>> '{information,branch}' = 'Computer';
studentname
-------------
lisi
zhangsan
(2 行记录)
‘>>’ 操作符返回的是文本类型的数据,‘>’ 操作符返回的是json/jsonb类型的数据。
操作符右侧使用数字则只对数组类型的json数据有效果,反之亦然。
KingbaseES json操作符的更多相关文章
- xpath json操作符说明
XPath JSONPath Description / $ the root object/element . @ the current object/element / . or [] chil ...
- PG 中 JSON 字段的应用
13 年发现 pg 有了 json 类型,便从 oracle 转 pg,几年下来也算比较熟稔了,总结几个有益的实践. 用途一:存储设计时无法预料的文档性的数据.比如,通常可以在人员表准备一个 json ...
- PostgreSQL9.3:JSON 功能增强 根据PQ中文论坛francs 给出的东西结合自己的摸索总结下
在 PostgreSQL 9.2 版本中已经支持 JSON 类型,不过支持的操作非常有限,仅支持以下函数 array_to_json(anyarray [, pretty_bool]) row_ ...
- PostgreSQL中JSON、JSONB基本操作符
PostgreSQL 9.5以上的版本中有了很多方便的操作符,使得操作 JSON 变得非常方便了. 一. -> 和 ->> : -> 表示获取一个JSON数组元素,支持下标值( ...
- KingbaseES 中 JSON 介绍
KingbaseES支持JSON和JSONB.这两种类型在使用上几乎完全一致,主要区别是 JSON类型把输入的数据原封不动的存放到数据库中.JSONB类型在存放时把JSON解析成二进制格式. JSON ...
- KingbaseES 的行列转换
目录 背景 行转列 数据准备 分组聚合函数+CASE 根据压缩数据的格式,横向展开数据列选取不同方式 crosstab函数 PIVOT 操作符 PIVOT 操作符的限制 工具 ksql 的元命令 \c ...
- 4种解决json日期格式问题的办法
4种解决json日期格式问题的办法 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下 ...
- 在javascript中使用Json
jSON是JavaScript面向对象语法的一个子集.由于JSON是JavaScript的一个子集,因此它可清晰的运用于此语言中. 文本生成json对象,必须在外面加一对括号. js 代码 var m ...
- 高程(3):操作符、for、for...in循环、break/continue/return语句、函数等
1.关系操作符 注意点:1)比较操作数是两个字符串,是比较字符串的字符编码值. 如:"a" > "b" 返回 false:"a" & ...
- JSON相关知识,转载:删除JSON中数组删除操作
一:JSON是什么 JSONg格式:对象是一个无序的“名称/值”对的集合. 对象以括号开始,括号结束. 名称冒号分隔值. "名称/值"之间用逗号分隔 例: var people = ...
随机推荐
- win32 - 使用Safer API创建受限的令牌
#include <Windows.h> #include <WinSafer.h> #include <stdio.h> #include <sddl.h& ...
- 【Android逆向】破解看雪9月算法破解第一题
1. 安装apk到手机 2. 随意输入账号和密码,点击register,报错crackme1:ERROR 3. 将apk拖入到jadx中进行观察 public native String regist ...
- 学习go语言编程之数据类型
数据类型概述 Golang语言内置了如下基础数据类型: 布尔类型:bool 整型:int8,unit8,int16,uint16,int32,uint32,int64,uint64,int,uint, ...
- Xray安全评估工具使用
xray 是一款功能强大的安全评估工具,主要特性有: 检测速度快.发包速度快; 漏洞检测算法高效. 支持范围广.大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均可以支持 ...
- iOS上拉边界下拉白色空白问题解决概述
表现 手指按住屏幕下拉,屏幕顶部会多出一块白色区域.手指按住屏幕上拉,底部多出一块白色区域. 产生原因 在 iOS 中,手指按住屏幕上下拖动,会触发 touchmove 事件.这个事件触发的对象是整个 ...
- 【Azure Service Bus】使用Spring Cloud integration示例代码,为多个 Service Bus的连接使用 ConnectionString 方式
问题描述 查看Service Bus的Java示例代码,发现使用Spring Cloud Integration,配置 Application.yaml 可以连接到两个Service Bus. 但代码 ...
- 【Azure 应用服务】如何查看App Service中的私网IP地址?
问题描述 在使用App Service服务时,可以通过Azure 门户中的属性功能查看出站IP列表. 如果把App Service与虚拟网络(VNET)集成后,它就可以直接访问虚拟网络内部资源,那么如 ...
- 【Azure 应用服务】App Service 通过 wardeploy 部署 war 包,如何指定到 root目录为wwwroot
问题描述 在部署War包到App Service时,参考文档:(使用 ZIP 或 WAR 文件将应用部署到 Azure 应用服务 : https://docs.azure.cn/zh-cn/app-s ...
- goland快键键防忘
环境: debian下的goland 2018实测: 鼠标button2 == 鼠标中键 光标移动: 跳转光标到刚才的位置: ctrl+win+alt+左/右 按词左右移动光标: ctrl + 左/右 ...
- multiple definition of `MainWindow::MainWindow(QWidget*)
qt刚建好工程运行的时候没问题,后面写了一点东西之后,再运行就发现出现MainWindow重复,我不理解. 解决方法:删除重复的引用. 再重新构建一下就好了.