首页 > 数据库 >PostgreSQL 使用数组类型及mybatis操作数组类型

PostgreSQL 使用数组类型及mybatis操作数组类型

时间:2022-12-10 11:01:25浏览次数:45  
标签:PostgreSQL 王玮嘉 惠普 10000 黄波 数组 mybatis 25000 quarter

  为啥要用到数组类型呢?因为​​ES支持数组类型​​,为了迁移遍历,所以也支持数组类型。

select docid,authors from search_doc_new_ic where authors @>'{"惠普"}' limit 10;
docid |authors |
--------------------------------+---------------+
cc88a182e84f4ab2a976abe1cbba0b41|{王玮嘉,惠普,黄波,环保Ⅱ}|
c3826da7a322490296ec9c5901ba353a|{王玮嘉,惠普,黄波} |
fc4f63dec47b4facb8216d8b29d9918a|{王玮嘉,惠普,黄波} |
863afb11385848c9a8a7c5df51024532|{王玮嘉,惠普,黄波,环保Ⅱ}|
fdc0562295304045b5c7ce940f96d56b|{王玮嘉,惠普,黄波,环保Ⅱ}|
6073e0de9b2747359c9b02e9bf0a9c2b|{王玮嘉,惠普,黄波} |
facc9518c75148da8b079fde64f47691|{王玮嘉,惠普,黄波} |
7c587a6337aa40c3acdbe7e363575317|{王玮嘉,惠普,黄波} |
dcf807b2b0cc477ca7919cc41d9f5331|{王玮嘉,惠普,黄波} |
631c4dd57afa40a694be1720e1b4a865|{王玮嘉,惠普,黄波} |
SELECT * FROM sal_emp;
name |pay_by_quarter |schedule |
-----+-------------------------+-----------------------------------------+
Bill |{10000,10000,10000,10000}|{{meeting,lunch},{training,presentation}}|
Carol|{20000,25000,25000,25000}|{{breakfast,consulting},{meeting,lunch}} |
SELECT * FROM sal_emp where 15000 < any (pay_by_quarter); -- 查询pay_by_quarter数组中任何一个元素都大于15000
name |pay_by_quarter |schedule |
-----+-------------------------+----------------------------------------+
Carol|{20000,25000,25000,25000}|{{breakfast,consulting},{meeting,lunch}}|
SELECT * FROM sal_emp where 22500 > ALL (pay_by_quarter); -- 查询pay_by_quarter数组中任何一个元素都小于22500
name|pay_by_quarter |schedule |
----+-------------------------+-----------------------------------------+
Bill|{10000,10000,10000,10000}|{{meeting,lunch},{training,presentation}}|
SELECT * FROM sal_emp where array_to_string(schedule,',') like '%sult%';   -- 数组模糊查询
name |pay_by_quarter |schedule |
-----+-------------------------+----------------------------------------+
Carol|{20000,25000,25000,25000}|{{breakfast,consulting},{meeting,lunch}}|

访问JSON中的数组 

create table test_ft(id int4,arry VARCHAR[],content1 jsonb,body text);
insert into test_ft values(1,ARRAY [ 'x', 'y' ],'{
"guid": "9c36adc1-7fb5-4d5b-83b4-90356a46balabala",
"name": "james",
"is_active": true,
"company": "Oracle",
"address": "178 Howard Place, Gulf, Washington, 702",
"registered": "2009-11-07T08:53:22 +08:00",
"latitude": 19.793713,
"longitude": 86.513373,
"tags": [
"enim",
"aliquip",
"qui"
]}','postgresql支持两种json数据类型:json和jsonb,而两者唯一的区别在于效率,json是对输入的完整拷贝,使用时再去解析,所以它会保留输入的空格,重复键以及顺序等。而jsonb是解析输入后保存的二进制,它在解析时会删除不必要的空格和重复的键,顺序和输入可能也不相同。使用时不用再次解析。两者对重复键的处理都是保留最后一个键值对。效率的差别:json类型存储快,使用慢,jsonb类型存储稍慢,使用较快。');
select id,arry, content1->'name',substr(body,1,100) from test_ft t
where t.arry @>'{"x"}'
and t.content1 @>'{"name":"james"}' and t.content1->'tags'->>1='aliquip' -- 访问content1 JSON中tags数组元素的第一个值



标签:PostgreSQL,王玮嘉,惠普,10000,黄波,数组,mybatis,25000,quarter
From: https://blog.51cto.com/zhjh256/5927318

相关文章

  • postgresql等待事件之wait_event为空null解析
    查看某个语句的当前等待事件可以查询pg_stat_activity表(类似于Oracle的v$session),如下所示:selectwait_event_type,wait_event,state,query,a.*frompg_stat_activitya......
  • 归并排序应用——剑指 Offer 51. 数组中的逆序对
    (文章目录)题目1.在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例1:输入:[7,5,6......
  • mybatis-plus中出现 org.apache.ibatis.binding.BindingException: Invalid bound sta
    记录用mybatis-plus写后端代码时出现了如下的问题org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound):com.springboot.mapper.BooksMa......
  • JS 数组方法 every 和 some 的区别
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 前端开发系列006-基础篇之JavaScript数组基础
    title:'前端开发系列006-基础篇之JavaScript数组基础'tags:-javaScript系列categories:[]date:2017-05-0222:20:13本文将介绍JavaScript语言中的数组,全文内容......
  • postgresql报错总结
    报错一:[postgres@vm-node2~]$psqlpsql:couldnotconnecttoserver:NosuchfileordirectoryIstheserverrunninglocallyandacceptingconnectionsonUnix......
  • 前端开发系列006-基础篇之JavaScript数组基础
    title:'前端开发系列006-基础篇之JavaScript数组基础'tags:-javaScript系列categories:[]date:2017-05-0222:20:13本文将介绍JavaScript语言中的数组,全文内容......
  • 数组
    本章重点:一、一维数组的创建和初始化创建时,【】内必须是常量,这样创建是错误的。(不能是变量)不完全初始化,剩下的元素默认初始化0,,余下七位数都是0这两种对字符类型的初始化都......
  • 数组分成两个最接近集合问题
    数组分成两个最接近集合问题作者:Grey原文地址:博客园:数组分成两个最接近集合问题CSDN:数组分成两个最接近集合问题问题描述给定一个正数数组arr,请把arr中所有的数......
  • 【LeeCode】剑指 Offer 42. 连续子数组的最大和
    【题目描述】输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)​​https://leetcode.cn/problems/lian-xu-zi-......