我有多个要通过同一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 $$;
答案 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, '}', '');