2012-06-25 12 views
25

में किसी सरणी का आकार कैसे ढूंढें कोई सरणी का आकार ढूंढने का कोई तरीका है?postgresql

उदाहरण के लिए,

CREATE TABLE example (id integer[]) ; 

INSERT INTO exam VALUES ('{}'); 

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

इस से, वहाँ किसी भी संभावनाओं, निम्नलिखित की तरह एक परिणाम प्राप्त करने के लिए है

size 

0 

3 

उत्तर

34

यह तुच्छ reading docs है:

SELECT array_length(id, 1) FROM example; 
+5

क्या आप जानते समारोह 'array_length' के दूसरे पैरामीटर है क्या करते हैं। दस्तावेज़ों में उस जानकारी को नहीं मिला। – suzanshakya

+10

@ सुज़ांस्काया, अनुरोधित सरणी की लंबाई _dimension_ ツ – vyegorov

27

vyegorov उल्लेख किया है, array_length चाल करेगा। या यदि आप जानते हैं कि सरणी 1-आयामी है (जो की संभावना है) और PostgreSQL 9.4 या उच्चतर चल रहे हैं, तो आप cardinality उपयोग कर सकते हैं:

SELECT cardinality(id) FROM example; 
+5

यदि कोई सरणी_लेथेंथ और कार्डिनिटी का उपयोग करने में प्रमुख अंतर का उल्लेख कर सकता है जो –

+2

'कार्डिनालिटी' एकल या बहुआयामी सरणी में सभी तत्वों की संख्या देता है। तो 'कार्डिनिटी का चयन करें (ARRAY [[1,2], [3,4]]); '' 4' वापस आ जाएगा, जबकि' array_length (ARRAY [[1,2], [3,4]] चुनें, 1) '2' वापस आ जाएगा। यदि आप पहले आयाम की गणना कर रहे हैं, तो 'array_length' एक सुरक्षित शर्त है। – Roshambo