KingbaseES json操作符

本文介绍了如何在PostgreSQL数据库中利用JSON操作符查询存储的学生信息。通过`->`、`->>`、`#>`等操作符,可以方便地获取JSON对象中的学生姓名、手机号码等数据,并在`WHERE`子句中进行条件过滤。示例查询展示了如何获取学生名字、手机号码以及根据分支筛选学生。
摘要由CSDN通过智能技术生成

下表列出了常用的json数据类型操作符:

操作符操作符右侧数据类型返回类型描述
->intjson or jsonb获得 JSON 数组元素(索引从 0 开始,负整数从末尾开始计)
->textjson or jsonb通过键获得 JSON 对象域
->>inttext以text形式获得 JSON 数组元素
->>texttext以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数据有效果,反之亦然。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值