postgresql将逗号分隔的字符串转换为多行实例
  • 作者:admin
  • 发表时间:2021-05-18 07:51
  • 来源:未知

本文主要介绍一个postgresql将逗号分隔的字符串转换成多行的例子,有很好的参考价值,希望对大家有所帮助。和边肖一起来看看

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

1选择unnest(string_to_array('4513,4564,555 ',','))作为a1;

-数组到行

一个

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

补充:PostgreSQL行到列,列到字符串函数,字符串分段函数

本文主要介绍PostgreSQL的行到列、列到列和字符串剪切功能。前两个功能在实际业务中使用,有实际例子可以参考。

1.字符串列切换

String_agg在某些地方也叫字符串聚合操作。

如果需要根据字符串和分隔符拼接。

例如:

根据id和指定的分隔符拼接字符串。实际业务中需要这个字符串函数做什么?

(更新)2020年1月16日17:05:59。

在这里,我学习了一个与系统表相关的查询,使用stragg,使用起来很奇妙。

选择字符串_agg(att.attname,','按属性排序)作为分布

从gp _分配_策略a,pg _属性属性

WHERE a . local oid=' sor . WPP _ ade effect _ f _ n ' : reg class

和a.localoid=att.attrelid

和att . attnum=any(a . attr nums);

1从pg_attribute中选择attname、attnum,其中attrelid='26625 '按attnum asc排序;

您可以看到,除了可见的列之外,每个表还有一列属性1。这些列用于实现mvcc,指示数据的物理位置和数据所在的segID.

1从pg_attribute中选择string_agg(attname,' ,' order by attnum),其中attrelid='26625 '和attnum 0;

查询所有可见的列并连接sql,这总是经过尝试和测试的。

2.字符串行到列

1regexp_split_to_table(字符串、模式[、标志])

regexp_split_to_table(字符串,模式[,标志]).如果与模式不匹配,函数返回字符串。

如果至少有一个匹配项,对于每个匹配项,它将返回从上一个匹配项的末尾(或字符串的开头)到该匹配项的开头的文本。当没有更多匹配时,它返回从最后一个匹配的末尾到字符串末尾的文本。

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

有很多标志,可以在http://postgres.cn/do.汤山网络公司的cs/9.6/functions-matching.html中找到,但是这个参数可以省略,我看到这个flg很少使用。