Не существует чистого SQL способа сделать это (кроме перечисления всех столбцов вручную).
Вы можете использовать pl/pgsql
:
DO
$$
DECLARE
schema_ TEXT := 'public';
table_ TEXT := 't';
column_list TEXT;
coalesced_list TEXT;
BEGIN
-- Build up 2 strings containing
-- (col1, col2, col3, ....)
-- (COALESCE(col1, 0), COALESCE(col2, 0), ...)
SELECT
'(' || string_agg(quote_ident(column_name), ', ') || ')',
'(' || string_agg('COALESCE(' || quote_ident(column_name) || ', 0)', ',') || ')'
FROM information_schema.columns
WHERE table_name = table_
AND table_schema = schema_
INTO column_list, coalesced_list
;
-- Update the table, settings columns (c1, c2, ...) to (COALESCE(c1, 0), COALESCE(c2, 0), ...)
-- changing all null values to zeroes
EXECUTE format($query$
UPDATE %I.%I
SET %s = %s
$query$, schema_, table_, column_list, coalesced_list);
END
$$;