কোন অ্যারের আকার খুঁজতে কোনও উপায় আছে?
উদাহরণ স্বরূপ,
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
এবং 3
Ops উদাহরণস্বরূপ। cardinality
কোনও উত্তর গ্রহণ করা সহজ এবং কম অপ্রত্যাশিত হিসাবে গ্রহণ করার সময় অবশ্যই ব্যবহারের প্রচার করা উচিত (আমি কল্পনা করি 99.999% অ্যারে ব্যবহার একক মাত্রিক)
অ্যারের ডাইমেনশনটি সর্বদা 1 হবে বলে ধরে নেওয়া আমার পক্ষে স্বাচ্ছন্দ্য বোধ হয় না তাই আমি নিম্নলিখিতটি দিয়ে চলেছি:
SELECT coalesce(array_length(id, 1), 0) as size FROM example;
এটি কমপক্ষে এক দশক হয়ে গেছে, তবে আমরা এর সাথে অনেক কিছু coalesce
করতাম এবং এটি বেশ কার্যকর ছিল। আমি কি স্বাচ্ছন্দ্যের বাইরে পৌঁছে যাচ্ছি?
৮.২ পোস্টগ্রিতে অ্যারে_আপার ব্যবহার করতে হয়েছিল।