जवाबों:
यदि आप एक सरणी चाहते हैं:
SELECT enum_range(NULL::myenum)
यदि आप enum में प्रत्येक आइटम के लिए एक अलग रिकॉर्ड चाहते हैं:
SELECT unnest(enum_range(NULL::myenum))
यह समाधान अपेक्षा के अनुसार काम करता है, भले ही आपका एनम डिफ़ॉल्ट स्कीमा में न हो। उदाहरण के लिए, के myenum
साथ बदलें myschema.myenum
।
उपरोक्त क्वेरी में दिए गए रिकॉर्ड का डेटा प्रकार होगा myenum
। आप जो कर रहे हैं, उसके आधार पर आपको पाठ करने की आवश्यकता हो सकती है। जैसे
SELECT unnest(enum_range(NULL::myenum))::text
यदि आप कॉलम नाम निर्दिष्ट करना चाहते हैं, तो आप जोड़ सकते हैं AS my_col_name
।
जस्टिन ओम्स को कुछ अतिरिक्त युक्तियों को इंगित करने का श्रेय, जिसे मैंने अपने उत्तर में शामिल किया।
NULL::
?
SELECT enum_range(myenum)
? कास्टिंग का मतलब क्या है null
?
प्रयत्न:
SELECT e.enumlabel
FROM pg_enum e
JOIN pg_type t ON e.enumtypid = t.oid
WHERE t.typname = 'myenum'
ORDER BY e.enumsortorder
तो क्वेरी में संलग्न करें। प्रगणित मूल्यों सबसे अधिक संभावना के आदेश से बाहर हो सकता है अगर नए मूल्यों का उपयोग कर गणना प्रकार में डाला गया BEFORE
या AFTER
।
SELECT unnest(enum_range(NULL::your_enum))::text AS your_column
यह एनम "your_enum" की सामग्री के सेट का एक सिंगल कॉलम परिणाम लौटाएगा जिसमें टाइप टेक्स्ट का "your_column" नाम का कॉलम होगा।
आप निम्नलिखित क्वेरी का उपयोग करके एनम के लिए सभी एनम मान प्राप्त कर सकते हैं। क्वेरी आपको यह चुनने देती है कि Enum किस नाम स्थान पर रहता है (जो आवश्यक है यदि enum को कई नामस्थानों में परिभाषित किया गया है, अन्यथा आप क्वेरी के उस भाग को छोड़ सकते हैं)।
SELECT enumlabel
FROM pg_enum
WHERE enumtypid=(SELECT typelem
FROM pg_type
WHERE typname='_myenum' AND
typnamespace=(SELECT oid
FROM pg_namespace
WHERE nspname='myschema'))