PG常用操作笔记(一)

一、并集、交集、差集

1.1并集,分union和union all两种情况

union 会去重

示例一:

select 1
union all 
select 1

只输出一个1:

1

union all  不会去重

示例二:

select 1
union all 
select 1

输出两个1:

1

1

1.2交集 intersect

示例:select 1
intersect
select 1

输出:1

1.3差集 except

示例:

select 2
except
select 2

输出 null ,由于两个查询结果一样,因此没有差异点

二、JSON和Array常用函数

2.1  unnset()函数,将输入的数组转换成一个表,每行一个元素

示例:select unnest(array['1', 'V'])

2.2 json_array_elements()和json_array_elements_text()

json_array_elements :展开JSON数组的每个JSON元素,展开之后每个元素值还是JSON

json_array_elements_text:展开JSON数组的每个JSON元素,展开之后每个元素值是text

示例: select json_array_elements('[{"name":"zs"}, {"name":"lisi"}]'::json)

由于展开之后每个元素是json,因此还可以获取name的值

select
  field1 ->> 'name' as name
from 
(
  select json_array_elements('[{"name":"zs"}, {"name":"lisi"}]'::json) as field1
) as t1

json_array_elements_text()使用示例

 select
  field1::json ->> 'name' as name -- 可以将text转为json之后获取name
from 
(
  select json_array_elements_text('[{"name":"zs"}, {"name":"lisi"}]'::json) as field1 -- 注意:json_array_elements_text平铺的每个元素是text
) as t1

2.2 PG中构建数组,可以使用array[元素1,元素2]来构建

select array[1,2,3]

2.3 json中使用->和->>取值的区别

->> 取值结果类型是文本

-> 取值结果类型是json

2.4 数组取并集、交集、差集

方案一:可以使用unnest()将数组转为多行,然后使用union/intersect/except取并集/交集/差集

 示例:数组交集

SELECT UNNEST(ARRAY[1, 2, 3])
  INTERSECT -- 可以修改为intersect/except取交集/差集
SELECT UNNEST(ARRAY[1, 2])

方案二:使用数组的函数来实现

数组并集示例

-- 链接函数,依然不会去重
select array_cat(ARRAY[1, 2], ARRAY[2, 3]) 

-- && 重叠,是否有共同元素,结果返回true/false
select ARRAY[1, 2, 3] && ARRAY[1, 2] 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCIE-DMA是一种基于PCIe接口的直接内访问技术,能够实现高速数据传输。在我的学习笔记中,我详细记录了与PCIE-DMA相关的知识和学习心得。 首先,我了解到PCIE-DMA技术的基本原理和作用。PCIE-DMA可以通过PCIe总线直接访问系统内中的数据,而不需要过多的CPU干预,提高数据传输的速度和效率。这种技术在需要大量数据传输的场景下非常有效,比如高性能计算、数据采集等。 其次,我深入学习了PCIE-DMA的工作原理。PCIE-DMA的核心是DMA控制器,它负责管理和控制数据传输的流程。当设备需要读写内中的数据,它通过DMA控制器发送请求,然后DMA控制器生成一个事务,将数据直接传输到或从内中。这样就大大减少了CPU的参与,提高了数据传输的效率。 另外,我还学习了PCIE-DMA的配置和编程方法。PCIE-DMA的配置主要包括硬件配置和软件配置两个部分。硬件配置通常涉及到DMA控制器和PCIe接口的初始化和配置,软件配置则需要编写驱动程序来驱动DMA控制器和处理数据传输过程中的事件和异常。这部分内容对于我来说还比较新颖,需要更多的实践和实践。 最后,我总结了PCIE-DMA的应用场景和发展前景。PCIE-DMA在高性能计算、数据采集等领域具有广阔的应用前景。随着数据量的不断增加和传输速度的要求越来越高,PCIE-DMA技术的需求也将越来越大。因此,对于我来说,学习掌握PCIE-DMA技术非常有价值。 通过学习和记录PCIE-DMA的相关知识和经验,我对这项技术有了更深入的理解和掌握。希望将来能通过应用PCIE-DMA技术解决实际问题,为科研和工程项目的顺利进行做出贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值