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 = ...
随机推荐
- 美团面试:Kafka如何处理百万级消息队列?
美团面试:Kafka如何处理百万级消息队列? 在今天的大数据时代,处理海量数据已成为各行各业的标配.特别是在消息队列领域,Apache Kafka 作为一个分布式流处理平台,因其高吞吐量.可扩展性.容 ...
- 我的小程序之旅十:微信公众号token验证失败
为了更好的运营公众号,微信官方支持用户自定义实现公众号功能,这里第一步就是配置服务器回调域名,如下图: 如果是SpringBoot项目,我们会写一个如下的Controller类 import lomb ...
- win32 - 使用LookupAccountName查找SID
可以使用LookupAccountNameA获取sid. LookupAccountName函数接受系统名称和帐户作为输入.它检索该帐户的安全标识符(SID)以及在其上找到该帐户的域的名称. 使用此a ...
- 类型别名TypeAlias
from collections.abc import Iterable from typing import TypeAlias FromTo = tuple[str, str] # 3.10之前 ...
- 大众点评-CAT监控平台
前言 我们禀着发现问题,解决问题的方针,针对后台诸多的服务,如何实时监控接口性能和访问频率,还要统计大盘信息?CAT作为大众点评开源的系统监控平台项目,下面就介绍一下CAT平台的搭建步骤. CAT作为 ...
- C# 一些类名的后缀及其意义
C# 中有常见的以以下名称为后缀的类型,笔者总结了一下大概用途. 目录 Extensions Helper 或 Helpers Scheme Builder Context Factory Provi ...
- Java 接口的使用
1 package com.bytezreo.interfacetest; 2 3 /** 4 * 5 * @Description 接口的使用 6 * @author Bytezero·zhengl ...
- 为什么现在连Date类都不建议使用了?
一.有什么问题吗java.util.Date? java.util.Date(Date从现在开始)是一个糟糕的类型,这解释了为什么它的大部分内容在 Java 1.1 中被弃用(但不幸的是仍在使用). ...
- C++ Qt开发:QFileSystemModel文件管理组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QFi ...
- 玉蟾宫(悬线dp)
求最大子矩阵一般用采用悬线法 (包好用的牢底) 悬线法: [ 以这道题为例,我们将R称为障碍格子,将F称为非障碍格子] 我们选择任意一个非障碍格子,引出三条直线:左直 右直 上直 随后从这个点出发,分 ...