将字符串拆分为多列

时间:2019-09-26 04:08:35

标签: postgresql

|assoc_name|
------------
|meena,malhotra
|sita,sharma

|assoc_name|assoc_last_name|
----------------------------
|meena     | malhotra     |
|sita      | sharma       |

SELECT split_part(assoc_name,',','1') AS Part1 from mytable; 这可行,但是我如何将输出保存到其他列?

1 个答案:

答案 0 :(得分:2)

只需对SPLIT_PART进行两次调用,就每个所需的列进行一次调用:

SELECT
    SPLIT_PART(assoc_name, ',', 1) AS assoc_name,
    SPLIT_PART(assoc_name, ',', 2) AS assoc_last_name
FROM mytable;

如果要将此视图保留在数据库表中,请尝试使用INSERT INTO ... SELECT,并使用上面的选择:

INSERT INTO someOtherTable (assoc_name, assoc_last_name)
SELECT
    SPLIT_PART(assoc_name, ',', 1),
    SPLIT_PART(assoc_name, ',', 2)
FROM mytable;

要处理上述对SPLIT_PART的调用中的一个/两个都可能返回NULL且目标列不可为空的情况,请考虑使用COALESCE

INSERT INTO someOtherTable (assoc_name, assoc_last_name)
SELECT
    COALESCE(SPLIT_PART(assoc_name, ',', 1), ''),
    COALESCE(SPLIT_PART(assoc_name, ',', 2), '')
FROM mytable;