কমা বিচ্ছিন্ন তালিকা হিসাবে ফলাফলগুলি ফিরতে পোস্টগ্রাইএসকিউএল কোয়েরি


97

ধরা যাক আপনার একটি SELECT id from tableজিজ্ঞাসা রয়েছে (আসল কেসটি একটি জটিল প্রশ্ন) যা আপনাকে বেশ কয়েকটি ফলাফল দেয় return

সমস্যাটি কীভাবে সমস্ত idএকক সারিতে ফিরে আসবেন, কমা পৃথকী?



উপরের "দুপ" প্রাসঙ্গিক এবং দরকারী ছিল, বিশেষত বিশেষত array_agg()ফাংশন।
জে টেলর

উত্তর:


214

SELECT string_agg(id::text, ',') FROM table

PostgreSQL 9.0 প্রয়োজন তবে এটি কোনও সমস্যা নয়।


এখনই এটি দরকারী খুঁজে পেয়েছি। ধন্যবাদ!
গুডড্ডমাইক

47
নোট করুন যে আমার পক্ষে কমপক্ষে, স্ট্রিং_এগ তার প্রথম যুক্তির জন্য কোনও int নেওয়া পছন্দ করে না তাই আমি এর মতো কিছু করেছি: string_agg(CAST(id as varchar), ',')পরিবর্তে।
জেজেডসি

17
@ জেজেডসি, বা আরও সহজ:string_agg(id::text, ',')
আলফায়া

6
আপনি যদি কলামটি বাছাই করতে চেয়েছিলেনselect string_agg(id, ', ' order by id desc) from table
এম এ হোসাইন টনু

4
আমি আমার প্রশ্নের সাথে সদৃশ হয়েছি কিন্তু এটি দিয়ে সমাধান করেছিSTRING_AGG(DISTINCT customer_name, ',')
ক্রিস্টোকিভি

53

আপনি আপনার ক্যোয়ারির সাথে অ্যারে () এবং অ্যারে_ টু স্ট্রিং () ফাংশন টোগেটর ব্যবহার করতে পারেন। আপনার সাথে SELECT array( SELECT id FROM table );যেমন একটি ফলাফল পাবেন: {1,2,3,4,5,6}

তারপরে, আপনি যদি}} চিহ্নগুলি সরিয়ে ফেলতে চান, আপনি কেবল অ্যারে_ টু স্ট্রিং () ফাংশনটি ব্যবহার করতে পারেন এবং বিভাজক হিসাবে কমা ব্যবহার করতে পারেন: সুতরাং SELECT array_to_string( array( SELECT id FROM table ), ',' ): 1,2,3,4,5,6 এর মতো ফলাফল পাবেন


4
SELECT array_to_string( id, ',' ) AS id FROM table
অ্যালেক্স আর

13

আপনি যে কোনও এসকিউএল কোয়েরি থেকে পিএসকিএল ব্যবহার করে একটি সিএসভি তৈরি করতে পারেন:

$ psql
> \o myfile.csv
> \f ','  
> \a
> SELECT col1 AS column1, col2 AS column2 ... FROM ...

ফলস্বরূপ myfile.csv এর এসএসকিউ রেজাল্টসেট কলামের নাম সিএসভি কলাম শিরোনাম হিসাবে থাকবে এবং কোয়েরিটি সিএসভি সারি হিসাবে টিপল করবে।

জ / T http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv


0

এর জন্য অ্যারে_ টু_স্ট্রিং () ও অ্যারে () ফাংশনটি ব্যবহার করুন।

select array_to_string(array(select column_name from table_name where id=5), ', ');

এটি ব্যবহারের চেয়ে কীভাবে ভাল string_agg()?
a_horse_with_no_name

-1
SELECT array_agg(id, ',') FROM table

{1,2,3,4}

আমি পোস্টগ্রাস 11 ব্যবহার করছি এবং সত্তা ফ্রেমওয়ার্ক এটিকে পূর্ণসংখ্যার অ্যারে হিসাবে আনছে।

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