Không có ứng dụng lệnh duy nhất. Rõ ràng là bạn có thể nhập nhiều dấu phẩy cho RENAME
của bạn, nhưng hãy để tôi tìm ra một số cải tiến :) Như tôi đã nói trong câu trả lời này
Trong trường hợp của bạn, nó sẽ là:
SELECT
'ALTER TABLE ' || tab_name || ' RENAME COLUMN '
|| quote_ident(column_name) || ' TO '
|| quote_ident( '_1' || column_name) || ';'
FROM (
SELECT
quote_ident(table_schema) || '.' || quote_ident(table_name) as tab_name,
column_name
FROM information_schema.columns
WHERE
table_schema = 'schema_name'
AND table_name = 'table_name'
AND column_name LIKE '\_%'
) sub;
Điều đó sẽ cung cấp cho bạn một tập hợp các chuỗi là các lệnh SQL như:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
Không cần sử dụng table_schema
trong WHERE
nếu bảng của bạn ở public
lược đồ. Cũng nhớ sử dụng hàm quote_ident()
- đọc câu trả lời ban đầu của tôi để được giải thích thêm.
Chỉnh sửa:
Tôi đã thay đổi truy vấn của mình nên bây giờ nó hoạt động cho tất cả các cột có tên bắt đầu bằng dấu gạch dưới _
. Vì dấu gạch dưới là ký tự đặc biệt trong đối sánh mẫu SQL, chúng ta phải thoát khỏi nó (sử dụng \
) để tìm nó một cách thực tế.