postgres 9.4将多个分隔符上的列拆分为新列

Posted

技术标签:

【中文标题】postgres 9.4将多个分隔符上的列拆分为新列【英文标题】:postgres 9.4 split column on multiple delimiters to new columns 【发布时间】:2016-05-31 06:26:57 【问题描述】:

参考这个 SO 问题

Postgres unnest

有没有办法将基于 2 个分隔符的列拆分为 4 列?

如果我有一列包含此数据。

11-3-1-4 $72390.00

我该怎么做呢

col1    col2    col3    col4    col5
11      3       1       4       72390.00

另外我应该保留原始列吗?

【问题讨论】:

【参考方案1】:

string_to_array() 可用于此:

select c1[1] as col1, 
       c1[2] as col2, 
       c1[3] as col3,
       c1[4] as col4,
       substr(col5, 2) as col5
from (
   select string_to_array((string_to_array(the_column, ' '))[1], '-') as c1,
          (string_to_array(the_column, ' '))[2] as col5
   from the_table
) t

【讨论】:

以上是关于postgres 9.4将多个分隔符上的列拆分为新列的主要内容,如果未能解决你的问题,请参考以下文章

将字符串拆分为新列[重复]

如何在 Postgres 9.4 中对 JSONB 类型的列执行更新操作

使用 postgres 9.4 将 JSON 元素附加到数组

在 Postgres 9.4 中查找 JSON 数组中的最后一项

通过分隔符将列文本拆分为R中的多个不同列

我可以使用 SQL 将存储为 CSV(逗号分隔值)的表列的内容拆分为新表中的单独行吗?