我需要通过拆分“错误发生在”列来规范化(以技术方式)表 1,使其与表 2 中的一样。
是否有任何 DML 函数可以帮助我解决这个问题?这样就可以在不使用超前滞后功能的情况下传输其余信息?
我尝试使用 string_to_array 和转置函数。
WITH split_dates AS (
SELECT other_columns..., unnest(string_to_array(error_occured_at, ', '))::date AS date
FROM table1
WHERE error_occured_at RLIKE "," -- Only considering rows that actually do contain a comma
)
INSERT INTO table1 (other_columns..., error_occured_at)
SELECT other_columns..., date
FROM split_dates;
如果你想删除
error_occured_at
是旧格式的行,你可以这样做:
DELETE FROM table1
WHERE error_occured_at RLIKE ","
您可以将
unnest
与 string_to_array
结合起来,如下所示:
SELECT *
FROM mytable, unnest(string_to_array(error_occured_at, ', ')) error_occured_at