পোস্টগ্রেসে একটি অ্যারেতে কোয়েরির আউটপুট নির্বাচন করুন


88

আমার কোডটি হ'ল:

SELECT column_name
FROM information.SCHEMA.columns
WHERE table_name = 'aean'

এটি টেবিলের কলামের নাম ফেরত দেয় aean
এখন আমি একটি অ্যারে ঘোষণা করেছি:

DECLARE colnames text[]

আমি কীভাবে কলমের নাম অ্যারে সিলেক্টের আউটপুট সংরক্ষণ করতে পারি।
কলোনাম আরম্ভ করার দরকার আছে কি?


+1, আমি ঠিক একই ত্রুটি বার্তাটি নিয়ে এখানে পৌঁছেছি - এরিআরআর: তথ্য টাইপ তথ্য_সেমি.এসএইচএল_ অ্যান্টিফায়ারের জন্য অ্যারে টাইপটি খুঁজে পাইনি। চেষ্টা করছিলামarray_agg(column_name, ',')
জেরিমাউস

উত্তর:


151

দুটি উপায় আছে। একটি হল সমষ্টিগত:

SELECT array_agg(column_name::TEXT)
FROM information.schema.columns
WHERE table_name = 'aean'

অন্যটি হল অ্যারে নির্মাণকারী ব্যবহার করা:

SELECT ARRAY(
SELECT column_name 
FROM information.schema.columns 
WHERE table_name = 'aean')

আমি অনুমান করছি এটি পিএলপিএএসএসএল এর জন্য। সেক্ষেত্রে আপনি এটিকে এটি নির্ধারণ করতে পারেন:

colnames := ARRAY(
SELECT column_name
FROM information.schema.columns
WHERE table_name='aean'
);

আপনি কি আমাকে পোস্টগ্র্যাগে কাজ করে এমন কোডটি দিতে পারেন কারণ এটি
পোস্টগ্র্রেস ইআরআরআর

সেটার জন্য দুঃখিত. মাইন্ডলেস অনুলিপি এবং পেস্ট করা অ্যারে_এগজি () তিনটি কলেই অন্তর্ভুক্ত। আপনার পিজি সংস্করণটিকে খুশি করতে আমি প্রাথমিকটি টাইপও করেছি।
ডেনিস ডি বার্নার্ডি

9
কারও জন্য পিএলপ.জি.এস.এল.এল অংশ দেখার জন্য আপনি DECLAREএকটি অ্যারে হিসাবে my_array INTEGER[];(বা প্রাসঙ্গিক ধরণের যাই হোক না কেন) করতে পারেন। আপনি কোয়েরির WHEREক্লজে যেমন অ্যারে ব্যবহার করতে পারেন WHERE values = ANY(my_array)ANYএকটি বিন্যাস বা একটি সেট লাগে এবং যে অ্যারের / সেট উপস্থিতি চেক করবে, তাই এটি equivalently কাজ IN ()একটি অর্থে
user2490003

11

আমার সত্যিকার অর্থে একই সমস্যা ছিল। ডেনিস প্রদত্ত সমাধানটির আরও একটি কার্যকরী পরিবর্তন (ধরণটি অবশ্যই নির্দিষ্ট করতে হবে):

SELECT ARRAY(
SELECT column_name::text
FROM information_schema.columns
WHERE table_name='aean'
)

4
এটি আর দেখা যায় না।
সোভিয়েট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.