天天看点

PostgreSQL 多重含义数组检索与条件过滤 (标签1:属性, 标签n:属性) - 包括UPSERT操作如何修改数组、追加数组元素

PostgreSQL , 多重函数数组 , UDF索引 , 过滤 , 文本处理

PG的数组类型,被广泛应用于 画像系统 , 标签系统。

在一些业务重建中,对数组内容的定义往往包含了多重含义,例如即包含了标签本身,又包含了标签的属性(例如 标签值:权值,时间 等)。

那么如何能高效的进行标签的检索,同时又过滤出符合标签加权值的记录呢?

1、建表

2、写入测试数据

3、创建UDF1,提取出要查询的标签值(用到了正则匹配)

4、创建UDF1索引

5、创建UDF2,提取指定标签的加权值(用到了正则匹配,数组下标计算,数组按位置取元素等操作)

6、查询SQL如下

查询包含标签a,同时权值大于20的记录。

UDF功能是不是很赞呢?

<a href="https://www.postgresql.org/docs/10/static/functions-array.html">https://www.postgresql.org/docs/10/static/functions-array.html</a>

1、追加元素

2、修改元素

3、删除元素

用法举例

继续阅读