如何将数据拆分为 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 上加深对字符串函数相关的这些函数的理解。
我在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 上加深对字符串函数相关的这些函数的理解。