How to normalize table1 in postgres sql?

问题描述 投票:0回答:2

我需要通过拆分“错误发生在”列来规范化(以技术方式)表 1,使其与表 2 中的一样。

是否有任何 DML 函数可以帮助我解决这个问题?这样就可以在不使用超前滞后功能的情况下传输其余信息?

我尝试使用 string_to_array 和转置函数。

sql postgresql normalization ddl dml
2个回答
0
投票
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 ","

0
投票

您可以将

unnest
string_to_array
结合起来,如下所示:

SELECT *
FROM   mytable, unnest(string_to_array(error_occured_at, ', ')) error_occured_at 
© www.soinside.com 2019 - 2024. All rights reserved.