如何将数据拆分为 postgres sql 中的列?

How to split data into columns in postgres sql?

我在table中有数据:

id question
1 1.1 Covid-19 [cases]
2 1.1 Covid-19 [deaths]

我想将数据拆分成列。要获得以下输出:

id questionid question_name sub_question_name
1 1.1 Covid-19 cases
2 1.1 Covid-19 deaths

有什么函数可以得到上面的输出吗?

这样做的一种方法是使用非常有用的 PostgreSQL SPLIT_PART 函数,它允许您拆分字符(在您的特定情况下,space)。只要最后一个字段不需要括号,就可以拆分开括号并使用 RTRIM 函数删除最后一个括号。

SELECT id, 
       SPLIT_PART(question, ' ', 1)             AS questionid,
       SPLIT_PART(question, ' ', 2)             AS question_name,
       RTRIM(SPLIT_PART(question, '[', 2), ']') AS sub_question_name
FROM  tab

查看演示 here

你可以在PostgreSQL official documentation 上加深对字符串函数相关的这些函数的理解。