কোন অ্যারের আকার খুঁজতে কোনও উপায় আছে?
উদাহরণ স্বরূপ,
CREATE TABLE example (id integer[]) ;
INSERT INTO exam VALUES ( '{}');
INSERT INTO exam VALUES ( '{5,6,7}');
এ থেকে, নীচের মতো ফলাফল পাওয়ার কোনও সম্ভাবনা আছে কি,
size
0
3
উত্তর:
যেমন ভাইগোরভ উল্লেখ করেছেন, array_lengthকৌশলটি করবেন। অথবা আপনি যদি জানেন যে অ্যারেটি 1-মাত্রিক (যা সম্ভবত) এবং পোস্টগ্র্যাসকিউএল 9.4 বা তার বেশি বা তারপরে চলছে, আপনি ব্যবহার করতে পারেন cardinality:
SELECT cardinality(id) FROM example;
cardinalityএকক বা বহুমাত্রিক অ্যারেতে সমস্ত উপাদানের সংখ্যা প্রদান করে। সুতরাং select cardinality(ARRAY[[1,2], [3,4]]);ফিরে আসবে 4, যেখানে select array_length(ARRAY[[1,2], [3,4]], 1)ফিরে আসবে 2। যদি আপনি প্রথম মাত্রা গণনা করেন তবে array_lengthএটি একটি নিরাপদ বাজি।
text, টাইপ করার সময় function array_length(text[]) does not exist);
nullএবং 0যেহেতু cardinalityআয় আপনি আশা করতে চাই কি। তারা এই যুক্তি দিয়ে কী চিন্তা করছিল তা ধারণা নেই।
এটি তুচ্ছ পড়ার ডক্স :
SELECT array_length(id, 1) FROM example;
array_length। দস্তাবেজে সেই তথ্যটি খুঁজে পেল না।
nullএবং 3পরিবর্তে 0এবং 3Ops উদাহরণস্বরূপ। cardinalityকোনও উত্তর গ্রহণ করা সহজ এবং কম অপ্রত্যাশিত হিসাবে গ্রহণ করার সময় অবশ্যই ব্যবহারের প্রচার করা উচিত (আমি কল্পনা করি 99.999% অ্যারে ব্যবহার একক মাত্রিক)
অ্যারের ডাইমেনশনটি সর্বদা 1 হবে বলে ধরে নেওয়া আমার পক্ষে স্বাচ্ছন্দ্য বোধ হয় না তাই আমি নিম্নলিখিতটি দিয়ে চলেছি:
SELECT coalesce(array_length(id, 1), 0) as size FROM example;
এটি কমপক্ষে এক দশক হয়ে গেছে, তবে আমরা এর সাথে অনেক কিছু coalesceকরতাম এবং এটি বেশ কার্যকর ছিল। আমি কি স্বাচ্ছন্দ্যের বাইরে পৌঁছে যাচ্ছি?
৮.২ পোস্টগ্রিতে অ্যারে_আপার ব্যবহার করতে হয়েছিল।