如果列以特定模式开头,如何在PostgreSQL中删除列

时间:2019-06-11 03:23:58

标签: postgresql ddl

如果列名以特定模式开头,则在PostgreSQL中删除列

CREATE TABLE public.table1
(
  id bigint NOT NULL,
  address character varying(500),
  primaryemailid character varying(150),
  trial577 character(1));


CREATE TABLE public.table2
(
  id bigint NOT NULL,
  address character varying(500),
  salary character varying(150),
  trial389 character(1));

像这样我有多个带有试验名称的表 如何删除该列名 我正在使用以下命令,但遇到错误

ALTER TABLE public.alarmconfig DROP COLUMN  LIKE 'trial%'

1 个答案:

答案 0 :(得分:0)

您可以使用信息模式确定所有表和列:

SELECT table_name, column_name FROM information_schema.columns 
WHERE schema_name = 'public' AND column_name LIKE 'trial%';

您可以使用它来获取必要的语句列表:

SELECT FORMAT('ALTER TABLE public.%s DROP COLUMN %s;', table_name, column_name) 
FROM information_schema.columns 
WHERE schema_name = 'public' AND column_name LIKE 'trial%';

最后,您可以将这些语句复制并粘贴到psql中。

如果这是一项定期任务,则可以根据上面的查询编写存储的函数。