Postgresql এ কোন অ্যারের আকারটি কীভাবে খুঁজে পাওয়া যায়


97

কোন অ্যারের আকার খুঁজতে কোনও উপায় আছে?

উদাহরণ স্বরূপ,

CREATE TABLE example (id integer[]) ;

INSERT INTO exam VALUES ( '{}');

INSERT INTO exam VALUES ( '{5,6,7}');

এ থেকে, নীচের মতো ফলাফল পাওয়ার কোনও সম্ভাবনা আছে কি,

size

0

3

উত্তর:


120

যেমন ভাইগোরভ উল্লেখ করেছেন, array_lengthকৌশলটি করবেন। অথবা আপনি যদি জানেন যে অ্যারেটি 1-মাত্রিক (যা সম্ভবত) এবং পোস্টগ্র্যাসকিউএল 9.4 বা তার বেশি বা তারপরে চলছে, আপনি ব্যবহার করতে পারেন cardinality:

SELECT cardinality(id) FROM example;

10
যদি কেউ অ্যারে_সৌধ এবং কার্ডিনালিটি ব্যবহার করে যে বড় পার্থক্যটি উল্লেখ করতে পারে তবে তা দুর্দান্ত হবে
জিয়া উল রেহমান মুঘল

6
cardinalityএকক বা বহুমাত্রিক অ্যারেতে সমস্ত উপাদানের সংখ্যা প্রদান করে। সুতরাং select cardinality(ARRAY[[1,2], [3,4]]);ফিরে আসবে 4, যেখানে select array_length(ARRAY[[1,2], [3,4]], 1)ফিরে আসবে 2। যদি আপনি প্রথম মাত্রা গণনা করেন তবে array_lengthএটি একটি নিরাপদ বাজি।
রোশাম্বো

4
এটাও একটি অ্যারের সাথে একটি ক্ষেত্র সংরক্ষিত জন্য কাজ করে text, টাইপ করার সময় function array_length(text[]) does not exist);
santuxus

4
একটি খালি অ্যারের এছাড়াও @ZiaUlRehmanMughal অ্যারের দৈর্ঘ্য অপ্রত্যাশিতভাবে মূল্যায়ণ nullএবং 0যেহেতু cardinalityআয় আপনি আশা করতে চাই কি। তারা এই যুক্তি দিয়ে কী চিন্তা করছিল তা ধারণা নেই।
EoghanM

81

এটি তুচ্ছ পড়ার ডক্স :

SELECT array_length(id, 1) FROM example;

13
আপনি কি জানেন যে ফাংশনের দ্বিতীয় প্যারামিটারটি কী array_length। দস্তাবেজে সেই তথ্যটি খুঁজে পেল না।
সুজনশখ্যা

19
@ সুজনশক্যা, অনুরোধ করা অ্যারের মাত্রার দৈর্ঘ্যツ
ভাইগোরভ

4
এই ফিরে আসবে nullএবং 3পরিবর্তে 0এবং 3Ops উদাহরণস্বরূপ। cardinalityকোনও উত্তর গ্রহণ করা সহজ এবং কম অপ্রত্যাশিত হিসাবে গ্রহণ করার সময় অবশ্যই ব্যবহারের প্রচার করা উচিত (আমি কল্পনা করি 99.999% অ্যারে ব্যবহার একক মাত্রিক)
EoghanM


9

অ্যারের ডাইমেনশনটি সর্বদা 1 হবে বলে ধরে নেওয়া আমার পক্ষে স্বাচ্ছন্দ্য বোধ হয় না তাই আমি নিম্নলিখিতটি দিয়ে চলেছি:

SELECT coalesce(array_length(id, 1), 0) as size FROM example;

এটি কমপক্ষে এক দশক হয়ে গেছে, তবে আমরা এর সাথে অনেক কিছু coalesceকরতাম এবং এটি বেশ কার্যকর ছিল। আমি কি স্বাচ্ছন্দ্যের বাইরে পৌঁছে যাচ্ছি?


3

৮.২ পোস্টগ্রিতে অ্যারে_আপার ব্যবহার করতে হয়েছিল।


জীবন রক্ষাকারী প্রায় সমস্ত পোস্টই অ্যারে_লেন্থ ব্যবহার করে () ধরে নিচ্ছেন যে মানুষ পোস্টগ্রাজে 9++ তে রয়েছে;
অনন্যপদে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.