পোস্টগ্র্যাস্কেল কিছুদিন আগে এনাম সমর্থন পেয়েছিল।
CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);
এনোমগুলিতে একটি ক্যোয়ারির সাহায্যে নির্দিষ্ট করা সমস্ত মান আমি কীভাবে পাব?
পোস্টগ্র্যাস্কেল কিছুদিন আগে এনাম সমর্থন পেয়েছিল।
CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);
এনোমগুলিতে একটি ক্যোয়ারির সাহায্যে নির্দিষ্ট করা সমস্ত মান আমি কীভাবে পাব?
উত্তর:
আপনি যদি একটি অ্যারে চান:
SELECT enum_range(NULL::myenum)
আপনি যদি এনামের প্রতিটি আইটেমের জন্য পৃথক রেকর্ড চান:
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
এটি "আপনার_কেনাম" টাইপের পাঠ্যের নামের একটি কলাম সহ এনাম "আপনার_ইনুম" এর সামগ্রীর একক কলাম ফলাফলের ফলাফল প্রদান করবে।
নিম্নলিখিত কোয়েরিটি ব্যবহার করে আপনি এনামের জন্য সমস্ত এনাম মান পেতে পারেন। ক্যোয়ারীটি আপনাকে এনামের কোন নেমস্পেসের মধ্যে বাছাই করতে দেয় (এনামটি একাধিক নেমস্পেসে সংজ্ঞায়িত করা হলে প্রয়োজনীয়; অন্যথায় আপনি কোয়েরির সেই অংশটি বাদ দিতে পারেন)।
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'))