cột column
là một từ dành riêng . Bạn không thể sử dụng nó làm định danh trừ khi bạn trích dẫn kép nó. Như:"column"
.
Tuy nhiên, không có nghĩa là bạn nên làm như vậy. Chỉ cần không sử dụng các từ dành riêng làm định danh. Đã từng.
Để ...
chọn danh sách các cột có tên là 2010:
.. bạn có thể sử dụng hàm này để tạo lệnh SQL động từ bảng danh mục hệ thống pg_attribute
:
CREATE OR REPLACE FUNCTION f_build_select(_tbl regclass, _pattern text)
RETURNS text AS
$func$
SELECT format('SELECT %s FROM %s'
, string_agg(quote_ident(attname), ', ')
, $1)
FROM pg_attribute
WHERE attrelid = $1
AND attname LIKE ('%' || $2 || '%')
AND NOT attisdropped -- no dropped (dead) columns
AND attnum > 0; -- no system columns
$func$ LANGUAGE sql;
Gọi:
SELECT f_build_select('weather_data', '2010');
Trả về một cái gì đó như:
SELECT foo2010, bar2010_id, FROM weather_data;
Bạn không thể đặt điều này hoàn toàn động vì kiểu trả về là không xác định cho đến khi chúng tôi thực sự tạo truy vấn.