当前位置: 首页 > news >正文

网站免费建站系统 六服务器如何发布网站

网站免费建站系统 六,服务器如何发布网站,新郑市网站建设,流媒体视频网站开发文章目录 一. Postgresql 9.5以下版本1.1 简单查询(缺陷:数组必须指定下标,不推荐)1.1.1 模糊查询1.1.2 等值匹配1.1.3 时间搜索1.1.4 在列表1.1.5 包含 1.2 多层级JSONArray(推荐)1.2.1 模糊查询1.2.2 模糊查询 NOT1.2.3 等值匹配…

文章目录

  • 一. Postgresql 9.5以下版本
      • 1.1 简单查询(缺陷:数组必须指定下标,不推荐)
          • 1.1.1 模糊查询
          • 1.1.2 等值匹配
          • 1.1.3 时间搜索
          • 1.1.4 在列表
          • 1.1.5 包含
      • 1.2 多层级JSONArray(推荐)
          • 1.2.1 模糊查询
          • 1.2.2 模糊查询 NOT
          • 1.2.3 等值匹配
          • 1.2.4 等值匹配 NOT
          • 1.2.5 时间搜索
          • 1.2.6 时间搜索 NOT
          • 1.2.7 在列表
          • 1.2.8 在列表 NOT
          • 1.2.9 包含
          • 1.2.10 包含 NOT
  • 二. Postgresql 9.5和以上版本
      • 2.1 模糊查询
      • 2.2 等值匹配
      • 2.3 时间搜索
      • 2.4 在列表
      • 2.5 包含

一. Postgresql 9.5以下版本

1.1 简单查询(缺陷:数组必须指定下标,不推荐)

1.1.1 模糊查询
SELECT  * FROM "public"."tf_low_data_testUser" WHERE  "address" #>> '{0,name}' like '%bb%'

address字段是JSONArray类型,所以在路径中,使用数字索引来访问数组元素,从 0 开始计数。

在这里插入图片描述

1.1.2 等值匹配
SELECT  * FROM "public"."tf_low_data_testUser" WHERE "address" #>> '{0,name}' = 'bbb'

在这里插入图片描述
如果字段是int类型,后面需要添加::int
在这里插入图片描述

1.1.3 时间搜索
SELECT  * FROM "public"."tf_low_data_testUser" WHERE  "address" #>> '{0,date}' BETWEEN '2023-08-13' AND '2023-08-17'

在这里插入图片描述

1.1.4 在列表
SELECT  * FROM "public"."tf_low_data_testUser" WHERE  "address" #>> '{0,name}' IN ('bbb','ccc')

在这里插入图片描述

1.1.5 包含
SELECT  * FROM "public"."tf_low_data_testUser" WHERE "address" #> '{0,roles,0,roleUsers}' @> '["eee"]'
  • #>:获取在指定路径的 JSON 对象,路径不存在则返回空。返回类型是json(b)
  • #>>:获取在指定路径的 JSON 对象,路径不存在则返回空。返回类型是text

在这里插入图片描述

1.2 多层级JSONArray(推荐)

如果表中有一个字段posts,数据结构为

[{"name": "aaa","ports": [{"port": 443,"nickname": "ggg","date": "2023-08-29","address": ["111", "222"]}, {"port": 80,"nickname": "fff","date": "2022-08-29","address": ["333", "444"]}]
}, {"name": "bbb","ports": [{"port": 2443,"nickname": "hhh","date": "2021-08-29","address": ["999"]}, {"port": 280,"nickname": "jjj","date": "2020-08-29","address": ["111111"]}]
}]
1.2.1 模糊查询

查询nickname like '%jj%'

可以看出有两层JSONArray结构

SELECT * FROM "public"."tf_low_data_testUser" WHERE EXISTS (SELECT 1FROM jsonb_array_elements("ports") as arr1(obj1) CROSS JOIN jsonb_array_elements(obj1->'ports') as arr2(obj2)WHERE (obj2->>'nickname') like '%gg%'
);

当该层级类型是数组就添加CROSS JOIN jsonb_array_elements(obj1->'ports') as arr2(obj2)

在这里插入图片描述

1.2.2 模糊查询 NOT
SELECT * FROM "public"."tf_low_data_testUser" WHERE NOT EXISTS (SELECT 1FROM jsonb_array_elements("ports") as arr1(obj1) CROSS JOIN jsonb_array_elements(obj1->'ports') as arr2(obj2)WHERE (obj2->>'nickname') like '%gg%'
);

查的是另外三条数据源
在这里插入图片描述

1.2.3 等值匹配
SELECT * FROM "public"."tf_low_data_testUser" WHERE EXISTS (SELECT 1FROM jsonb_array_elements("ports") as arr1(obj1) CROSS JOIN jsonb_array_elements(obj1->'ports') as arr2(obj2)WHERE (obj2->>'port')::int = 80
);

如果是数字类型后面需要转换 ::int,因为 ->> 操作符的返回类型是 text

在这里插入图片描述

1.2.4 等值匹配 NOT
SELECT * FROM "public"."tf_low_data_testUser" WHERE NOT EXISTS (SELECT 1FROM jsonb_array_elements("ports") as arr1(obj1) CROSS JOIN jsonb_array_elements(obj1->'ports') as arr2(obj2)WHERE (obj2->>'port')::int = 80
);

查的是另外三条数据源
在这里插入图片描述

1.2.5 时间搜索
SELECT * FROM "public"."tf_low_data_testUser" WHERE EXISTS (SELECT 1FROM jsonb_array_elements("ports") as arr1(obj1) CROSS JOIN jsonb_array_elements(obj1->'ports') as arr2(obj2)WHERE (obj2->>'date') BETWEEN '2022-08-13' AND '2023-08-17'
);

在这里插入图片描述

1.2.6 时间搜索 NOT

查的是另外三条数据源
在这里插入图片描述

1.2.7 在列表
SELECT * FROM "public"."tf_low_data_testUser" WHERE EXISTS (SELECT 1FROM jsonb_array_elements("ports") as arr1(obj1) CROSS JOIN jsonb_array_elements(obj1->'ports') as arr2(obj2)WHERE (obj2->>'nickname') IN ('ggg','fff')
);

在这里插入图片描述

1.2.8 在列表 NOT

查的是另外三条数据源
在这里插入图片描述

1.2.9 包含
SELECT * FROM "public"."tf_low_data_testUser" WHERE EXISTS (SELECT 1FROM jsonb_array_elements("ports") as arr1(obj1) CROSS JOIN jsonb_array_elements(obj1->'ports') as arr2(obj2)WHERE (obj2->'address') @> '["444"]'
);

此时使用的操作符是->,返回值是jsonb类型

在这里插入图片描述

1.2.10 包含 NOT

查的是另外三条数据源
在这里插入图片描述

二. Postgresql 9.5和以上版本

也兼容上面的JSON查询

2.1 模糊查询

使用函数jsonb_path_exists(可以指定JSON路径,如果是数组添加[*])的正则查询达到模糊查询的效果

-- like '%ggg%'
SELECT * FROM "public"."tf_low_data_testUser" WHERE jsonb_path_exists("ports", '$[*].ports[*].nickname ?(@ like_regex "g")')
-- 左模糊 like '%g'
SELECT * FROM "public"."tf_low_data_testUser" WHERE jsonb_path_exists("ports", '$[*].ports[*].nickname ?(@ like_regex "g$")')
-- 右模糊 like 'g%'
SELECT * FROM "public"."tf_low_data_testUser" WHERE jsonb_path_exists("ports", '$[*].ports[*].nickname ?(@ like_regex "^g")')
-- 等值匹配
SELECT * FROM "public"."tf_low_data_testUser" WHERE jsonb_path_exists("ports", '$[*].ports[*].nickname ?(@ like_regex "^ggg$")')

在这里插入图片描述

同样支持NOT

2.2 等值匹配

SELECT * FROM "public"."tf_low_data_testUser" WHERE jsonb_path_exists("ports", '$[*].ports[*].nickname ?(@ == "fff")')

在这里插入图片描述

同样支持NOT

2.3 时间搜索

SELECT * FROM "public"."tf_low_data_testUser" WHERE jsonb_path_exists("ports", '$[*].ports[*].date ?(@ >= "2022-01-02" && @ <= "2023-08-02")')

在这里插入图片描述

同样支持NOT

2.4 在列表

SELECT * FROM "public"."tf_low_data_testUser" WHERE jsonb_path_exists("ports", '$[*].ports[*].nickname ?(@ == "ggg" || @ == "fff")')

在这里插入图片描述

同样支持NOT

2.5 包含

等值匹配一样

SELECT * FROM "public"."tf_low_data_testUser" WHERE jsonb_path_exists("ports", '$[*].ports[*].address ?(@ == "222")')

在这里插入图片描述

同样支持NOT

http://www.yayakq.cn/news/927584/

相关文章:

  • 外网代理服务器网站网站开发阶段流程
  • 网站设计欣赏导航云南省建设工作网站
  • 网站怎样制作网站正在建设中的图片
  • 达濠市政建设有限公司网站电商网站开发建设
  • 常用的网站开发语言网站建设方式优化
  • 浙江省建设监理协会管网站公众号怎么发文章
  • 河南郑州创建网站公司做损坏文档的网站
  • win7做网站著名展厅设计案例
  • php网站开发实国外效果图网站
  • wordpress photolux公司优化是什么意思?
  • 企业网站建设分析wordpress 网址全部变成ip
  • 快速网站备案房屋在线设计平台
  • 怎么做网站例如京东用asp做网站上网帮助
  • 桂林本地网站专门做进口产品的网站6
  • 织梦可以做哪些类型型网站微信卖水果小程序
  • 做网站一定要正版系统吗网页期末作业代码模板
  • dw用ps切片做网站app引流推广方法
  • 做网站编辑有前途珠海建设公司网站
  • 东莞网站建设方案维护石家庄专业网站制作公司
  • asp.net网站制作步骤如何下载别人网站模板
  • 创建虚拟网站做点击网页图片加载失败
  • 国内电商网站跳出率是多少渭南做网站电话
  • 怎么打开域名网站房山区文化活动中心有wifi吗
  • 酒店网站建设范文公司做的网站计入什么
  • 网站建设价格标准方案阜宁网站建设公司
  • 几百块做网站wordpress在后台文章自定义表单
  • 音乐影视网站建设方案wordpress展示页面
  • 高端网站建设公司哪家好做美食的网站可以放些小图片
  • 做网站的每天打电话咋办国家和住房城乡建设部网站
  • 百度贴吧网页版登录贵州seo技术培训