小程序制作平台网站设计平台 互联网品牌制作专家
关于A5客户收购GoogleAdsense带有搜索账户的相关事宜更多

软文发布平台资讯中心

postgresql将逗号分隔的字符串转为多行的实例

postgresql将逗号分隔的字符串转为多行的实例

  项目招商找A5 快速获取精准代理名单

这篇文章主要介绍了postgresql 将逗号分隔的字符串转为多行的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

-- 将逗号分隔的字符串转为多行

1SELECT unnest(string_to_array('4513,4564,555',',')) as a1;

-- array转为行

1

2SELECT unnest(ARRAY[1,2]);SELECT * from unnest(ARRAY[1,2],ARRAY['foo','bar','baz']);

补充:PostgreSQL 行转列、列转行字符串函数、字符串分割函数

本文主要介紹PostgreSQL 的行转列、列转行以及字符串切割函数,实际业务中对前两个均有使用,并配有实际例子参考。

1、字符串列转行

string_agg,某些地方也称为字符串聚合操作。

如果需要按照一个字符串按照某个分割符拼接起来。

例如:

按照id把字符串按照指定分隔符拼接起来。实际业务中有什么需要这种字符串函数的呢?

-----------------------update 2020年1月16日17:05:59-----------------------

这里学习一个和系统表有关的查询,用到了stragg ,用法之妙,自己体会。

SELECT string_agg(att.attname,',' order by attrnums) as distribution FROM gp_distribution_policy a,pg_attribute att WHERE a.localoid ='sor.wpp_adefect_f_n'::regclass and a.localoid = att.attrelid and att.attnum = any(a.attrnums);

1select attname,attnum from pg_attribute where attrelid='26625' order by attnum asc;

可以看到每个表上除了可见的列之外还有attrnums < 1的列。这几个列用来实现mvcc、表明数据的物理位置、数据所处segID...

1select string_agg(attname,',' order by attnum) from pg_attribute where attrelid='26625' and attnum >0;

将所有可见列查询出来拼接sql,屡试不爽。

2、字符串行转列

1regexp_split_to_table(string, pattern [, flags ])

regexp_split_to_table(string, pattern [, flags ])。如果没有与pattern的匹配,该函数返回string。

如果有至少有一个匹配,对每一个匹配它都返回从上一个匹配的末尾(或者串的开头)到这次匹配开头之间的文本。当没有更多匹配时,它返回从上一次匹配的末尾到串末尾之间的文本。

flags参数是一个可选的文本串,它包含零个或更多单字母标志,这些标识可以改变该函数的行为。

这个标识有很多,具体可查看http://postgres.cn/docs/9.6/functions-matching.html。不过该参数是可以省略的,我看到很少用这个flg的。

E是Posix样式转义字符串的前缀。现代Postgres通常不需要这个,此处的E可有可无。

--\\s+ 可匹配至少一个空白字符。

--\\s 表示空白字符。包括,空格,制表符等

--\s*

--*是贪婪模式,会尽可能匹配更多的字符

--而*?是非贪婪模式 会尽量匹配少的字符

SELECT foo FROM regexp_split_to_table('the quick brown fox jumps over the lazy dog', E'\\s') AS foo;SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*?') AS foo;

关于正则表达式计划以专题来学习

几个元字符是需要记住的:

-----------------------update 2019年10月23日11:37:32-----------------------

imagePath字符串切割处理

如果想将如上的长列转换为多行,可通过regexp_split_to_table()来处理。处理的结果如下。

sql形如:

select regexp_split_to_table(image_path,E'\\ ') pattern from (select distinct panel_id, 'Y:\\' || prod_id || '\\' || substring( glass_id, 0, 6 )|| '\\' || substring( glass_id, 0, 9 )|| '\\' || panel_id || '\\' || 'big' || ' '||'Y:\\' || prod_id || '\\' || substring( glass_id, 0, 6 )|| '\\' || substring( glass_id, 0, 9 )|| '\\' || panel_id || '\\' || 'small'|| ' '||'Y:\\' || prod_id || '\\' || substring( glass_id, 0, 6 )|| '\\' || substring( glass_id, 0, 9 )|| '\\' || panel_id || '\\' || 'IMAGE' as image_path from tabelNamewhere 1 = 1and time>= '2019-09-09 00:00:00'and time<= '2019-09-10 08:00:00')A

3、字符串分割符

split_part(str,',',1)select split_part('A3332-22222222','-',1); - > A3332 select split_part('A3332-22222222','-',2); - > 22222222

文章来源:脚本之家

来源地址:https://www.jb51.net/article/205150.htm

尊敬的看官您对postgresql将逗号分隔的字符串转为多行的实例有什么看法呢?互联网品牌制作专家愿与您共同探讨!版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请加微信号oem365 举报,一经查实,本站将立刻删除。

上一篇: postgresql查询集合结果用逗号分隔返回字符串处理的操作   返 回   下一篇:PostgreSQL向数据库表中添加行数据的操作

相关资讯

小程序应用场景 | 小程序解决方案 | 小程序案例 | 小程序应功能 | 软文发布资源 | 网站设计

酒店预约解决方案
酒店预约小程序走红网络,也是传统转型的重要变化
详情
投票解决方案
强大功能,傻瓜式管理,有效防止作弊刷票
详情
新零售解决方案
小程序是现在新零售的新方式,深度结合线上线下
详情
预约服务解决方案
预约到店小程序通过用户在线预约到店等
详情
企业官网解决方案
企业展示小程序主要展示企业信息、产品案例等
详情
教育培训解决方案
主要展示教育机构的课程、可在线预约与购买课程
详情
推广解决方案
可以让企业通过推广模式全面展示自己的产品
详情
到店解决方案
到店服务解决方案,主要是面向实体餐饮门店
详情

我们的服务是否能满足您的需求?

如果不能,请联系我们或给我们留言,我们收到后会第一时间联系您!感谢您对我们的关注!

粤公网安备 44200002005005号