Postgresql记录到数组

奥利维尔·马特罗特(Olivier MATROT)

我需要从数组转换为行,然后再转换回数组以过滤记录。在SELECT查询中使用information_schema._pg_expandarray来获取数组中每个值一行。

给定以下数组:

"char"[]
{i,i,o,t,b}

_pg_expandarray使用记录类型为1的列恢复5行:

record
(i,1)
(i,2)
(o,3)
(t,4) <= to be filtered out later
(b,5)

我需要过滤此结果集以排除包含't'的记录

我怎样才能做到这一点 ?我应该转换回数组吗?有没有一种方法可以直接对数组进行过滤?

提前致谢。

有害的

如果您的目标是生成如上所述的一组行,但是删除了包含“ t”的行,则可以做到这一点:

test=> select * 
       from  information_schema._pg_expandarray(array['i','i','o','t','b']) as a(i)
       where a.i!='t';
 i | n
---+---
 i | 1
 i | 2
 o | 3
 b | 5
(4 rows)

顺便说一句,除非您特别希望将索引作为第二列返回,否则我倾向于使用unnest()over information_schema._pg_expandarray(),它似乎没有记录在案,并且名称中以“ _”开头的判断可能仅供内部使用。

似乎没有任何内置函数可以过滤数组。您的问题暗示您可能想要数组形式的结果-如果是这种情况,那么编写一个简单的函数将是微不足道的。这是一个例子:

CREATE OR REPLACE FUNCTION array_filter(anyarray, anyelement) RETURNS anyarray
AS $$
DECLARE
   inArray ALIAS FOR $1;
   filtValue ALIAS FOR $2;
   outArray ALIAS FOR $0;
   outIndex int=0;
BEGIN
   FOR I IN array_lower(inArray, 1)..array_upper(inArray, 1) LOOP
    IF inArray[I] != filtValue THEN
        outArray[outIndex] := inArray[I];
        outIndex=outIndex+1;
    END IF;
   END LOOP;
RETURN outArray;
END;
$$ LANGUAGE plpgsql 
STABLE 
RETURNS NULL ON NULL INPUT;

用法:

test=> select array_filter(array['i','i','o','t','b'],'t');
  array_filter
-----------------
 [0:3]={i,i,o,b}
(1 row)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Linq记录到字符串数组

来自分类Dev

添加缺少的记录到数组列表,如果它不是在它

来自分类Dev

单击将多个变量记录到数组中

来自分类Dev

只记录到第一个数组

来自分类Dev

查询字符串到php数组并记录到文件

来自分类Dev

WinRT记录到文件

来自分类Dev

航行记录到文件

来自分类Dev

记录到多个输出

来自分类Dev

Python记录到Azure

来自分类Dev

记录到文本

来自分类Dev

胶水记录到期

来自分类Dev

禁用记录到syslog

来自分类Dev

Docker记录到容器

来自分类Dev

为什么在将数组内容记录到控制台后未定义 javascript 数组对象?

来自分类Dev

在Postgresql中将记录数组转换为JSON

来自分类Dev

活动记录:从PostgreSQL数组中删除元素

来自分类Dev

将数组中的数据记录到Angular Typescript中的console.log

来自分类Dev

从文本文件中读取记录到Pascal中的数组

来自分类Dev

PHP-我需要将所有变量(POST,$ _ SESSION,数组)记录到文件中

来自分类Dev

有没有办法将 max 中的动作记录到 maxscript 数组中?

来自分类Dev

记录到文件与记录到数据库

来自分类Dev

使用nLog记录到oracle

来自分类Dev

Nginx:记录到系统日志

来自分类Dev

Puma记录到哪里

来自分类Dev

python记录到多个目标

来自分类Dev

python仅记录到文件

来自分类Dev

Python未记录到stdout

来自分类Dev

将值记录到文件

来自分类Dev

WebSphere记录到定制文件