postgresql 实现将数组变为行
有的时候需要把数组元素同表中的字段进行关系运算,首先得把array变为记录行
SELECT "unnest"(array[1,2,3]) 结果: unnest
求数组交集:
SELECT "unnest"(array[1,2,3]) INTERSECT SELECT "unnest"(array[3,4,5]) 结果: unnest 3
补充:PostgreSQL单列多行变一行&一行变多行
工作中经常遇到这样一个场景,希望将某个字断查询出得结果组合成为一个字符串,用逗号分割(或者分号),通过PG中的函数该如何实现?
多行变一行
实例表:
想要的结果:
方法一:string_agg(字段名,分隔符)
select id,string_agg(name,',') AS NAME_NEW from test group by 1 ORDER BY 1
方法二:array_agg(字段名)
select id,array_agg(name) AS NAME_NEW from test group by 1 ORDER BY 1; select id,array_to_string(array_agg(name),',') AS NAME_NEW from test group by 1 ORDER BY 1;
另外:array_agg(distinct(字段名)) 拼接唯一的字段。
一行变多行
select id,regexp_split_to_table(name_new,',') AS NAME from test; select id,unnest(string_to_array(name_new,',')) AS NAME from test;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
PostgreSQL中使用数组改进性能实例代码
前言 postgresql支持数组类型,可以是基本类型,也可以是用户自定义的类型.日常中使用数组类型的机会不多,但还是可以了解一下.不像C或JAVA高级语言的数组下标从0开始,postgresql数组下标从1开始,既可以指定长度,也可以不指定长度.且postgresql既支持一维数组,也支持多维数组,但是平时二维数组也就够用了. 本文将给大家介绍PostgreSQL通过数组改进性能的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 PostgreSQL通过数组改进性能 创
-
在PostgreSQL中使用数组时值得注意的一些地方
在Heap中,我们依靠PostgreSQL支撑大多数后端繁重的任务,我们存储每个事件为一个hstore blob,我们为每个跟踪的用户维护一个已完成事件的PostgreSQL数组,并将这些事件按时间排序. Hstore能够让我们以灵活的方式附加属性到事件中,而且事件数组赋予了我们强大的性能,特别是对于漏斗查询,在这些查询中我们计算不同转化渠道步骤间的输出. 在这篇文章中,我们看看那些意外接受大量输入的PostgreSQL函数,然后以高效,惯用的方式重写它. 你的第一反应可能是将PostgreSQ
-
Mybatis调用PostgreSQL存储过程实现数组入参传递
前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: 复制代码 代码如下: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 如上所示,参数是一个int数组,Mybatis提供了对调用存储过程的支持,那么PostgreSQL独有的数组类型作为存储过程的参数又
-
PostgreSQL 对数组的遍历操作
PostgreSQL 提供了数组类型. 我来演示下如何具体使用 创建一个有数组类型字段的表. create table test_array(id serial primary key, str1 int[][][]); 插入两条测试数据. insert into test_array values (1,array[[[1,2],[3,4],[5,6]],[[20,30],[40,50],[70,100]]]); insert into test_array values (2,array[[
-
postgresql 实现将数组变为行
有的时候需要把数组元素同表中的字段进行关系运算,首先得把array变为记录行 SELECT "unnest"(array[1,2,3]) 结果: unnest 求数组交集: SELECT "unnest"(array[1,2,3]) INTERSECT SELECT "unnest"(array[3,4,5]) 结果: unnest 3 补充:PostgreSQL单列多行变一行&一行变多行 工作中经常遇到这样一个场景,希望将某个字断查询出
-
PHP基于关联数组20行代码搞定约瑟夫问题示例
本文实例讲述了PHP基于关联数组20行代码搞定约瑟夫问题.分享给大家供大家参考,具体如下: 记得前段时间一写做java开发的兄弟对我说他java60行做了个约瑟夫问题,挺不错的.调侃php应该写这个挺不行的. 于是 呵呵... 洋洋洒洒 20行,写完自己都有些不相信了.哈哈 让不了解php的见识哈php的快捷轻便之处. ps:其实个人挺反感用代码行数来衡量代码数量的,感觉常把代码行数挂嘴边的大多无奈装2.此文仅属闲余娱乐. 回顾一下约瑟夫问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最
-
Thinkphp将二维数组变为标签适用的一维数组方法总结
本文实例总结了Thinkphp将二维数组变为标签适用的一维数组方法.分享给大家供大家参考.具体实现方法如下: 方法一: 复制代码 代码如下: $projectList=arr1tag($projectList,array('','请选择'),'project_name'); //其中$list为传值过来的二维数组,$default为默认值,$k为指定的表字段 function arr1tag($list,$default='',$k=''){ $tmp=''; if(array(
-
jquery如何把数组变为字符串传到服务端并处理
jquery把数组变为字符串然后在传到服务端(jquery把数组转换成字符串后,格式如1,2,3,速度,rewr) 复制代码 代码如下: define(function(require, exports, module) { var Notify = require('common/bootstrap-notify'); module.exports = function($element) { $element.on('click', '[data-role=batch-delete]', f
-
python统计多维数组的行数和列数实例
python菜鸟,每天都要进步一点点. 二维元组的例子: A = ((1, 1, 1), (1, 1, 1),(1, 1, 1),(0, 0, 0)) print len(A) # 4, print len(A[0]) # 3 同样的如果是多维,每一维长度应该是 len(A[i]) 以上这篇python统计多维数组的行数和列数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
C#中获取二维数组的行数和列数以及多维数组各个维度的长度
如何获取二维数组中的元素个数呢? int[,] array = new int[,] {{1,2,3},{4,5,6},{7,8,9}};//定义一个3行3列的二维数组 int row = array.Rank;//获取维数,这里指行数 int col = array.GetLength(1);//获取指定维度中的元素个数,这里也就是列数了.(0是第一维,1表示的是第二维) int col = array.GetUpperBound(0)+1;//获取指定维度的索引上限,在加上一个1就是总数,这
-
PHP 读取Postgresql中的数组
复制代码 代码如下: function getarray_postgresql($arraystr) { $regx1 = '/^{(.*)}$/'; $regx2 = "/\"((\\\\\\\\|\\\\\"|[^\"])+)\"|[^,]+/"; $regx3 = '/^[^"].*$|^"(.*)"$/'; $match = null; preg_match( $reg
-
举例简单介绍PostgreSQL中的数组
PostgreSQL 有很多丰富的开箱即用的数据类型,从标准的数字数据类型.到几何类型,甚至网络数据类型等等.虽然很多人会忽略这些数据类 型,但却是我最喜欢的特性之一.而数组数据类型正如你所期望的,可以在 PostgreSQL 存储数组数据,有了这个特性,你可以在单个表中实现以往需要多个表才能实现的存储要求. 为什么要使用数组来存储数据,如果你是应用开发人员,那么在数据库中使用同样的模型来存储程序中的数据,何乐而不为呢.况且这样的做法还能提升性能.下面我们将介绍如何使用 PostgreSQL 的
随机推荐
- Django集成百度富文本编辑器uEditor攻略
- golang判断chan channel是否关闭的方法
- 详解nodejs express下使用redis管理session
- 利用vbs类实现css按钮的代码
- CentOS下搭建SVN服务器的步骤详解
- java中对Redis的缓存进行操作的示例代码
- Java 抽象类定义与方法实例详解
- Java 8 新特性终极版指南详解
- python实现在windows下操作word的方法
- PHP简单的MVC框架实现方法
- C++中头文件的概念与基本编写方法
- JavaScript函数的一些注意要点小结及js匿名函数
- 让Apache支持shtml实现include文件解析的配置方法
- Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析
- Android实现将应用崩溃信息发送给开发者并重启应用的方法
- Java基础教程之对象的方法与数据成员
- 详解C++中赋值和输入输出语句的用法
- thinkPHP实现多字段模糊匹配查询的方法
- JWT.net 操作实践方法
- Spring AOP注解失效的坑及JDK动态代理