PG数据库的Jsonb全文检索查询

news2024/9/28 19:03:52

1.操作键值对

PostgreSQL 对 jsonb 类型的筛选查询可以使用 -> 或者 ->> 操作符。

  • -> 操作符用于通过 JSON 对象中的键来获取对应的值。
  • ->> 操作符可以将获取到的值提取出来转化为字符串类型。

例如,下面是一个包含 jsonb 类型字段的表:

CREATE TABLE test (
  id SERIAL PRIMARY KEY,
  data JSONB
);
 
INSERT INTO test (data) VALUES ('{"name": "John", "age": 30, "city": "New York"}');
INSERT INTO test (data) VALUES ('{"name": "Jane", "age": 25, "city": "Los Angeles"}');

我们可以通过下面这中查询方式进行全库的全文检索查询

-- 获取所有数据
SELECT * FROM test;
 
-- 根据 jsonb 字段中的键值进行查询
SELECT * FROM test WHERE data -> 'name' = '"John"';
-- 注意:键名需要用单引号括起来,并且值需要用双引号括起来。
 
-- 使用 ->> 将键对应的值提取出来进行查询
SELECT * FROM test WHERE data ->> 'age' = '30';

上面这个提取出来的例子可能不明显

下面添加一个复杂的json例子

{
    "caseInfo": {
        "caseNo": "C20xxxxxxxxx8212566",
        "reportNo": "P2xxxxxxxxxxxxxxxxx3004",
        "applyTime": 17xxxxxxxxx5000,
        "companyId": 1xx00,
        "treatType": "1",
        "createFrom": 1xxx1,
        "companyName": "中国xxxxxxxxxxx公司",
        "processType": "2xx",
        "accidentDate": 171xxxxxxxx1000,
        "accidentType": "xx1x",
        "hospitalCode": "xxxxxxxxx35",
        "hospitalName": "台xxxxxxxxxxxx院",
        "hospitalLevel": "",
        "medicalFinish": "",
        "firstCompanyId": 0987654,
        "injuredFromArea": "ytgrefds",
        "insuranceTypeId": "",
        "firstCompanyName": "中xxxxxxxxxxxx限公司",
        "hospitalAttribute": "",
        "uploadUserOrgCode": "",
        "totalSettlementAmount": 0
    },
    "patientInfo": {
        "name": "邱76y5t432",
        "idCard": "33sacdvfgbdcs1232675",
        "address": "asadfghfdsa村",
        "birthday": sadcsxazxsc000,
        "cardType": "asdsad",
        "idDueDay": 2asxcv bgdfsc000,
        "genderCode": "1"
    },
    "applyUserInfo": {
        "nationality": "CHN",
        "applyUserName": "",
        "applyUserIdCard": "",
        "applyUserBirthday": "",
        "applyUserCardType": "",
        "applyUserIdDueDay": "",
        "applyUserGenderCode": "",
        "applyUserPatientRelation": ""
    }
}

这个时候提取的作用就显得明显了很多

--  ->> 提取测试sql,将applyUserInfo下的nationality提取出来,做一维sql标准查询
SELECT count(*)
FROM case_service.cs_case_model
WHERE (cs_case_model.case_model_detail -> 'applyUserInfo' ->> 'nationality') like '%C%';

结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2174483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业IT安全重保服务:守护关键时刻的坚固防线

中国联通国际有限公司产品之IT安全重保服务:守护关键时刻的坚固防线 在数字化时代,信息安全已成为企业运营与国家安全的基石。随着各类重大活动、会议及内部专项工作的频繁举行,如何确保信息系统在关键时刻免受黑客攻击、网页篡改、病毒感染…

零工市场小程序的未来发展趋势

随着经济的发展,越来越多的人们选择了灵活就业的方式来工作,零工市场小程序作为灵活就业一个重要的媒介,未来的发展趋势如何呢? 其实在零工市场小程序中,有着大数据的分析、算法,可以精准的匹配到自由职业…

深度学习常见术语介绍

文章目录 数据集(Dataset)特征(Feature)标签(Label)训练集(Training Set)测试集(Test Set)验证集(Validation Set)模型(Mo…

基于Hive和Hadoop的哔哩哔哩网站分析系统

本项目是一个基于大数据技术的哔哩哔哩平台分析系统,旨在为用户提供全面的哔哩哔哩视频数据和深入的用户行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出&#xf…

金镐开源组织成立,增加最新KIT技术,望能为开源添一把火

国内做开源的很多,知名的若依、芋道源码、Pig、Guns等,可谓是百花齐放,虽然比不上Apache,但也大大提高了国内的生产力。经过多年的发展,一些开源项目逐渐也都开始商业化。基于这样的背景,我拉拢了三个技术人…

SO-ELM预测 | MATLAB实现SO-ELM蛇群算法优化极限学习机多输入单输出

回归预测 | MATLAB实现SO-ELM蛇群算法优化极限学习机多输入单输出 目录 回归预测 | MATLAB实现SO-ELM蛇群算法优化极限学习机多输入单输出效果一览基本介绍程序设计效果一览 基本介绍 Matlab实现SO-ELM蛇群算法优化极限学习机多变量回归预测 1.data为数据集,7个输入特征,1个输…

SIGA 气路柜系统VAPORIZER SYSTEM VS-111-321 含电路图

SIGA 气路柜系统VAPORIZER SYSTEM VS-111-321 含电路图

stm32单片机个人学习笔记8(TIM输出比较)

前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…

第一批学Ai绘画的人,到底是怎么变现的?变现方式详细拆解!

Ai绘画技术发展到现在,已经有不少人通过这个渠道实现了变现。 我们在羡慕别人赚钱的同时,也应该从中不断地总结,思考哲轩变现方式的共同之处,在总结出找到属于自己的变现方式。 今天我就结合一些以往变现的成功案例,…

UnityShader 一种RGB分离效果

UnityShader 一种RGB分离效果 前言项目ASE截图 前言 看到一种RGB分离的Shader效果,记录一下。 项目 ASE截图

JavaEE: 探索网络世界的核心-IP协议

文章目录 IP 协议协议头格式IP 地址IP地址的数量限制解决IP不够用的问题 IP 地址的网段划分子网掩码ABCDE五类网络 特殊的 IP 地址 IP 协议 协议头格式 4位版本号: 只有两个取值,4(IPv4)和6(IPv6). IPv2,IPv5这些在实际中是没有的,可能是理论上/实验室中存在~ 4位首部长度: IP…

Adobe PR与AE的区别与联系(附网盘地址)

从事视频后期制作的小伙伴,对于PR(Premiere)和AE(After Effects)应该不会陌生。随着短视频的兴起,就连我们普通用户,拍摄完视频,都会去糟取精的剪辑一下,而PR正是一款功能…

【ESP32】Arduino开发 | I2C控制器+I2C主从收发例程

有关I2C控制器的详细介绍放在了IDF开发的文章中,跳转栏目目录可以找到对应的文章。 1. API Arduino启动时就已经实例化了两个I2C设备类,分别对应Wire和Wire1对象。 1.1 初始化 bool begin(int sda, int scl, uint32_t frequency0); // returns true, i…

安全教育培训小程序系统开发制作方案

安全教育培训小程序系统是为了提高公众的安全意识,普及安全知识,通过微信小程序的方式提供安全教育培训服务,帮助用户了解并掌握必要的安全防范措施。 一、目标用户 企业员工:各岗位员工,特别是IT部门、财务、行政等对…

08-Registry搭建docker私仓

08-Registry搭建docker私仓 Docker Registry Docker Registry是官方提供的工具,用于构建私有镜像仓库。 环境搭建 Docker Registry也是Docker Hub提供的一个镜像,可以直接拉取运行。 步骤: 拉取镜像 docker pull registry启动Docker R…

Html 转为 MarkDown

在 RAG 中,通常需要将 HTML 转为 Markdown,有很多第三方 API 都支持 HTML 的转换,本文使用一个代码文档的例子 https://www.joinquant.com/help/api/help#name:Stock,将聚宽 API 转为 Markdown。本文通过两种方式进行实现,使用收费和开源的解决方案。聚宽 API 格式转为 Ma…

接口自动化测试数据怎么来?涉及资金的接口如何在线上回归?

最近,有一位小伙伴提出一个问题: 目前在用pytest做接口自动化,因为一开始就想要把这套接口自动化用到生产环境,所以考虑的问题比较多一点点。 请问: 1.在做接口自动化的过程中,参数的数据应该从哪里来比较…

【virtuous】ron与rout的区别

ron:直流阻抗,大信号电阻 rout:交流阻抗,,小信号电阻

钰泰-ETA1611 升压IC

描述 ETA1611是一款高效升压转换器,内部集成了22V电源MOSEFT。它以的 1MHz 频率运行,允许使用小型外部组件,同时仍能提供效率。它可以驱动高达 2A 的输出电流。通过 EN 引脚集成的真正 PWM 调光功能可以进一步以数字方式设置更低的输出电压。…

SNIDA

saliency mask M n _n n​ obtained from SOD is pasted onto the background mask to obtain the mask M I ( s ) _{I(s)} I(s)​ of the input image I as a prior 辅助信息 作者未提供代码