0
我有一個PostgreSQL數據庫,我需要對特定列的值進行更新。列的數量非常大,我需要對不同的表執行相同的操作,所以更好地動態提取它們。從PostgreSQL表中提取特定列並對其值進行更新
更具體地說,我想從表中提取名稱以「_suffix」結尾的所有列並對其值進行更新。 我開始嘗試製作一個腳本,但我不知道它是否是正確的道路!
SELECT columns.column_name
FROM information_schema.columns
WHERE columns.table_name = 'myInitialTable' AND columns.column_name like '%\_suffix%' AND columns.table_schema = 'public';
我創造了這個查詢的景色,我用它在以下功能:
CREATE OR REPLACE FUNCTION updatetable() RETURNS int4 AS
$BODY$
DECLARE r RECORD;
BEGIN
FOR r IN SELECT * from v_reduced_table LOOP
update myInitialTable
set r.column_name = case
when r.column_name = '' then NULL
when r.column_name = 'value1' or r.column_name = 'value2' then 'xxxxx'
else r.column_name end;
END LOOP;
return 1;
END;
$BODY$
LANGUAGE plpgsql;
SELECT updatetable() as output;
這個查詢做後綴結尾的列一個循環,並更新其值。但是當我運行它,我得到
ERROR: syntax error at or near "$1"
LINE 1: update myInitialTable set $1 = case when $2 = '' then NULL when ...
任何幫助表示讚賞:)
你要設置的所有列相同的值? – klin
取決於內容的不同值(確切的是2個值) – Rad1
說明(在問題中)如何區分這兩種列。 – klin