PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

त्रुटि:फ़ंक्शन अननेस्ट (पूर्णांक []) पोस्टग्रेस्क्ल में मौजूद नहीं है

unnest() मॉड्यूल का हिस्सा नहीं है intarray , लेकिन मानक PostgreSQL के। हालांकि, आपको संस्करण की आवश्यकता है 8.4 या बाद में उसके लिए।

तो आप इसे हाल के संस्करण में अपग्रेड करके हल कर सकते हैं, अधिमानतः वर्तमान संस्करण 9.1। देखें PostgreSQL प्रोजेक्ट की वर्जनिंग नीति

यदि आपको हेरोकू के साझा डेटाबेस का उपयोग करना चाहिए, जो वर्तमान में संस्करण 8.3 का उपयोग करता है, तो वे भी उन्नयन की तलाश में हैं। Heroku Labs पहले से ही 9.1 ऑफ़र कर रही है

जैसा कि @Abdul ने टिप्पणी की, आप एक गरीब आदमी के unnest() . को लागू कर सकते हैं PostgreSQL 8.4 से पहले के संस्करणों में स्वयं:

CREATE OR REPLACE FUNCTION unnest(anyarray)
  RETURNS SETOF anyelement AS
$BODY$
   SELECT $1[i] FROM generate_series(array_lower($1,1), array_upper($1,1)) i;
$BODY$ LANGUAGE sql IMMUTABLE;

हालांकि, ध्यान रखें कि यह केवल एक-आयामी सरणियों के लिए काम करता है . (जैसा कि PostgreSQL के unnest() . के विपरीत है जो कई आयामों के साथ सरणियाँ लेता है):

SELECT unnest('{1,2,3,4}'::int[])  -- works
SELECT unnest('{{1,2},{3,4},{5,6}}'::int[])  -- fails! (returns all NULLs)

आप कर सकते थे n-आयामी सरणियों के लिए अधिक फ़ंक्शन लागू करें:

CREATE OR REPLACE FUNCTION unnest2(anyarray) -- for 2-dimensional arrays
  RETURNS SETOF anyelement AS
$BODY$
SELECT $1[i][j]
FROM  (
    SELECT i, generate_series(array_lower($1,2), array_upper($1,2)) j
    FROM  (
        SELECT generate_series(array_lower($1,1), array_upper($1,1)) i
        ) x
    ) y;
$BODY$ LANGUAGE sql IMMUTABLE;

कॉल करें:

SELECT unnest2('{{1,2},{3,4},{5,6}}'::int[])  -- works!

आप एक PL/pgSQL फ़ंक्शन भी लिख सकते हैं जो कई आयामों से संबंधित है ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेस्क्ल में अतिरिक्त_फ्लोट_डिजिट्स सेट करें =3

  2. SQLAlchemy के साथ बल्क अपरर्ट

  3. स्प्रिंग/हाइबरनेट/जेपीए के भीतर PostgreSQL फ़ंक्शंस (संग्रहीत प्रक्रियाओं) को सही तरीके से कैसे कॉल करें?

  4. रेग। नौकरी के स्तर पर स्प्रिंग बैच नौकरी के लिए लेनदेन समर्थन

  5. एसक्यूएल एक पेड़ में सभी प्रत्यक्ष वंशज खोजें