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

PostgreSQL 9.0 और 9.1 . के बीच एनम प्रकार के शाब्दिक क्रम में अंतर

मुझे लगता है कि आपको PostgreSQL संस्करण की जांच करनी होगी और व्यवहार को उचित रूप से बदलना होगा, या SQL का उपयोग करना होगा जो ऑर्डरिंग निर्धारित करने के लिए कैटलॉग को स्पर्श नहीं करता है।

बाद के लिए एक विचार, दिए गए डमी एनम:

CREATE TYPE test_enum AS ENUM ('z','x','y');
ALTER TYPE test_enum ADD VALUE 'a' BEFORE 'x';

ORDER BY . है row_number . का उपयोग करके एनम प्रकार के मानों के लिए एनम लेबल की कास्ट विंडो फ़ंक्शन 8.4 और नए में उपलब्ध है:

SELECT enumlabel, row_number() OVER (ORDER BY enumlabel::test_enum) AS sort_key
FROM pg_catalog.pg_enum
WHERE enumtypid = 'test_enum'::regtype;

यह आपको सॉर्ट कुंजी द्वारा ऑर्डर किए गए लेबल प्राप्त करता है। पुराने Pg संस्करणों में Pg केवल oid . द्वारा क्रमबद्ध होगा एनम मूल्यों में से, नए संस्करणों में यह एनमसोर्टऑर्डर का उपयोग करेगा, लेकिन आपको किसी भी तरह की परवाह नहीं है, आपने अभी पोस्टग्रेएसक्यूएल को बताया है "कृपया इन्हें सही क्रम में क्रमबद्ध करें"।

या यदि आपको सर्वर द्वारा अपेक्षित क्रम में उनकी आवश्यकता है, तो लिखें:

SELECT enumlabel
FROM pg_catalog.pg_enum
WHERE enumtypid = 'test_enum'::regtype
ORDER BY enumlabel::test_enum



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ट्रिगर को सक्रिय करने वाली क्वेरी की स्ट्रिंग प्राप्त करें

  2. डेटा एडेप्टर का उपयोग करते हुए अद्यतन करते समय DBConcurrency अपवाद हुआ

  3. बेंचमार्किंग प्रबंधित PostgreSQL क्लाउड समाधान:भाग दो - Amazon RDS

  4. PostgreSQL पर डेटाबेस निर्माण तिथि प्राप्त करें

  5. SQL क्वेरी:किसी तालिका से आदेशित पंक्तियाँ प्राप्त करें