将变体字符[]转换为变体字符postgresql

时间:2019-08-06 11:47:21

标签: postgresql ddl

我有多个要通过同一SQL文件运行的输入文件。有时我在其上运行正则表达式的列是一个字符varianting [],有时在另一个文件中的同一列是一个字符变化而没有[]。我想确保输入文件是带[]或不带[]的字符都没关系。

以下内容适用于单个文件:

ALTER TABLE table ALTER COLUMN column TYPE character varying;
UPDATE table SET column = left(column , length(column )-1);
UPDATE table SET column = right(column , length(column )-1);

当将类型从character changes []更改为character changes时,它保留了必须用update语句删除的方括号。我无法创建一个适用于两个输入文件的解决方案。

我认为这可能是答案,但是PL SQL对我来说很困难:http://www.postgresqltutorial.com/plpgsql-if-else-statements/。目前正在为此工作,但不确定我是否朝着正确的方向前进:

DO $$ 
DECLARE
   ??? a integer := 10;
   ??? b integer := 10;
BEGIN 
  IF column === character varying[] THEN 
     ALTER TABLE table ALTER COLUMN column TYPE character varying;
     UPDATE table SET column = left(column , length(column )-1);
     UPDATE table SET column = right(column , length(column )-1);
  ELSE
     RAISE NOTICE 'column is a character varying';
  END IF;
END $$;

1 个答案:

答案 0 :(得分:0)

通过以下操作解决了该问题:

ALTER TABLE elektriciteitskabel ALTER COLUMN link_href TYPE character varying;
UPDATE elektriciteitskabel SET link_href = replace(link_href, '{', '');
UPDATE elektriciteitskabel SET link_href = replace(link_href, '}', '');