पोस्टग्रेज़ सरणी तत्व हमेशा आधार तत्व . होते हैं , यानी स्केलर मूल्य। पोस्टग्रेज में उप-सरणी "तत्व" नहीं हैं। ऐरे स्लाइस मूल आयाम बनाए रखते हैं।
आप या तो आधार तत्व . निकाल सकते हैं , जो अदिश तत्व डेटा प्रकार का एक मान है।
या आप एक सरणी टुकड़ा निकाल सकते हैं , जो मूल सरणी डेटा प्रकार और मूल सरणी आयामों को भी बरकरार रखता है।
उप-सरणी को "तत्व" के रूप में पुनर्प्राप्त करने का आपका विचार उसके साथ विरोध करेगा और अभी लागू नहीं किया गया है।
मैनुअल इसकी व्याख्या में स्पष्ट हो सकता है। लेकिन कम से कम हम पा सकते हैं:
आपका पहला उदाहरण आधार तत्व को संदर्भित करने का प्रयास करता है, जो नहीं मिला है (आपको 2-डी सरणी में दो सरणी अनुक्रमणिका की आवश्यकता होगी)। इसलिए Postgres NULL लौटाता है।
आपका तीसरा उदाहरण बस परिणामी NULL को एक नई सरणी में लपेटता है।
समतल . करने के लिए एक सरणी टुकड़ा (इसे 1-डी सरणी बनाएं) आप unnest()
और परिणामी सेट को एक नए ARRAY कंस्ट्रक्टर
. या तो किसी सहसंबद्ध उपश्रेणी में या LATERAL
. में शामिल हों (पृष्ठ 9.3+ की आवश्यकता है)। दोनों का प्रदर्शन:
SELECT s.col[2:2][2:3] AS slice_arr
, x.lateral_arr
, ARRAY(SELECT unnest(s.col[2:2][2:3])) AS corr_arr
FROM (SELECT ARRAY[[1,2,3],[4,5,6]] AS col) s
, LATERAL (SELECT ARRAY(SELECT * FROM unnest(s.col[2:2][2:3])) AS lateral_arr) x;
और मैनुअल का वर्तमान संस्करण पढ़ना सुनिश्चित करें। . आपके संदर्भ पोस्टग्रेज़ 9.1 की ओर इशारा करते हैं, लेकिन संभावना है कि आप वास्तव में पोस्टग्रेज़ 9.4 का उपयोग कर रहे हैं।
संबंधित: