用于在单个列中转换分栏符的SQL查询

时间:2017-05-17 07:14:26

标签: sql postgresql

我在postgres中有一个数据库,其中一列包含带有多个列分隔符的文本数据。

因此,当我将数据导出到csv文件时,列混乱!

我需要一个查询,它会忽略单个列中的列分隔符,并提供一个输出,其中列中的数据在同一列中可用,并且不会扩展到下一列。

1 个答案:

答案 0 :(得分:0)

此示例表显示您正在讨论的问题:

test=> SELECT * FROM breaks;
┌────┬───────────┐
│ id │    val    │
├────┼───────────┤
│  1 │ text with↵│
│    │ three    ↵│
│    │ lines     │
│  2 │ text with↵│
│    │ two lines │
└────┴───────────┘
(2 rows)

然后你可以使用replace函数用空格替换换行符:

test=> SELECT id, replace(val, E'\n', ' ') FROM breaks;
┌────┬───────────────────────┐
│ id │        replace        │
├────┼───────────────────────┤
│  1 │ text with three lines │
│  2 │ text with two lines   │
└────┴───────────────────────┘
(2 rows)