HP.*_*HP. 5 sql postgresql postgresql-8.4
如果我在 SQL 语句中有类似的内容('A','B','C')
,如何将其转换为具有多行的列,如下所示
col
---
A
B
C
Run Code Online (Sandbox Code Playgroud)
我无法更改该字符串的创建方式(因为它是从外部程序注入到 SQL 查询中的)。例如,我不能将其设置为['A','B','C']
(用方括号替换)。我可以把任何东西包裹在它周围,不管怎样[('A','B','C')]
。
有什么帮助吗?
更新1
我有 PostgreSQL 8.4.20
您可以创建一个ARRAY
fromVALUES
然后解除它的嵌套:
SELECT
unnest(ARRAY[col_a, col_b, col_c])
FROM
(VALUES('A','B','C')) AS x(col_a, col_b, col_c)
Run Code Online (Sandbox Code Playgroud)
结果:
| unnest |
|--------|
| A |
| B |
| C |
Run Code Online (Sandbox Code Playgroud)
编辑:您还可以通过使用美元引号 ( ) 来调整jspcal 的答案,$$
如下所示,以便您可以将字符串连接到 SQL 语句中:
SELECT * FROM regexp_split_to_table(
regexp_replace(
$$('A','B','C','D','foo')$$,
'^\(''|''\)+', '', 'g'),
''','''
);
Run Code Online (Sandbox Code Playgroud)