我希望通过同一个SQL文件运行多个输入文件。有时我在其上运行正则表达式的列是一个字符varying[],而有时不同文件中的同一列是一个没有[]的字符。我希望确保输入文件是一个带或不带[]的字符,这并不重要。
以下内容适用于单个文件:
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 varying[]更改为character varying时,它保留了我必须使用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 $$;发布于 2019-08-06 19:55:55
通过执行以下操作修复该问题:
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, '}', '');https://stackoverflow.com/questions/57375384
复制相似问题