column
एक आरक्षित शब्द . है . आप इसे पहचानकर्ता के रूप में तब तक उपयोग नहीं कर सकते जब तक आप इसे डबल-कोट नहीं करते। जैसे:"column"
।
इसका मतलब यह नहीं है कि आपको चाहिए। बस आरक्षित शब्दों को पहचानकर्ता के रूप में प्रयोग न करें। कभी।
करने के लिए ...
<ब्लॉकक्वॉट>उनके नाम पर 2010 के साथ स्तंभों की सूची चुनें:
.. आप सिस्टम कैटलॉग तालिका pg_attribute
से गतिशील रूप से SQL कमांड बनाने के लिए इस फ़ंक्शन का उपयोग कर सकते हैं :
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;
कॉल करें:
SELECT f_build_select('weather_data', '2010');
कुछ इस तरह लौटाता है:
SELECT foo2010, bar2010_id, FROM weather_data;
आप इसे पूरी तरह से गतिशील नहीं बना सकते, क्योंकि वापसी प्रकार अज्ञात . है जब तक हम वास्तव में क्वेरी नहीं बनाते।