太阳集团tyc5997|官网【中国】有限公司

postgresql实现字符串分段字段列表查询
  • 作者:admin
  • 发表时间:2021-05-18 07:52
  • 来源:未知

本文主要介绍postgresql实现字符串分段字段列表查询,具有很好的参考价值,希望对大家有所帮助。来和边肖一起看看。

在数据查询中,一个A表存储另一个B表的id,用','分隔

例如:

假设现在要关联查询一些关于表B的信息。

拆分查询:字符串到列表函数:regexp_split_to_table()

1从regexp_split_to_table中选择*

查询结束后,字符串变成一个列表,然后就可以根据这个列表找到表B的相关信息。

选择*

来自pm.product

其中id:text文本在

(从regexp_split_to_table中选择*((从bp.fee _ project _ meal中选择product _ ids,其中id=116199376233182210),','))

首先数据验证是正确的,说明sql没有问题,然后一起进行联查

1.因为这个表a与表b具有一对多的关系,所以我们首先关联多个表。

选择a.id作为“表_id”,

A.name作为“表名”,

P.name为“b表名”

来自bp.fee _ project _饭局a

LEft JOIN pm . product p on p . id : text

in(从regexp_split_to_table中选择*((从bp.fee _ project _ meal中选择product _ ids,其中id=a.id),','))

其中a.id=116199376233182210

2.还有一个就是只要我找出表A的数据,表B的数据中就有一些字段是以非拼接的形式存在的,也就是说我现在就想找出表A的数据

选择

A.id为' table _id ',

A.name作为“表名”,

Bb.p_id为' b表_拼接id ',

Bb.p_name为' b表_拼接名'

来自bp.fee _ project _饭局a

左连接(

选择a.id为' bb_id ',String_agg(p.id:text,',')为' p_id ',String _ agg(p . name : text,',')为' p_name '

来自bp.fee _ project _饭局a

LEFT JOIN pm.product p on

p.id:text in(从regexp_split_to_table中选择*((从bp.fee _ project _ meal中选择product _ ids,其中id=a.id),','))

分组依据1

)bb上bb。bb_id'=a.id

以上是字符串字段的反汇编查询。

补充:pgsql查询字段中用逗号分隔的字符串数

1从表中选择长度(翻译(列,' | |列,'))1

参见:

1.translate是类似replace的替换函数,但是translate是一次替换多个单个字符。

2.基本用法,对应替换字符。

示例:

1从dual选择translate('1234567 ',' 123 ',' ABC ');-1被a取代,2被B取代,3被c取代。

Baidu
sogou