本文主要介绍一个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很少使用。