"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PostgreSQL अनावश्यक () फ़ंक्शन को तत्व नंबरिंग विधि प्राप्त करने के लिए

PostgreSQL अनावश्यक () फ़ंक्शन को तत्व नंबरिंग विधि प्राप्त करने के लिए

2025-04-13 को पोस्ट किया गया
ब्राउज़ करें:483

How to Get the Element Number When Using PostgreSQL's unnest() Function?

]

सवाल जब अलग -अलग मानों वाले एक कॉलम का सामना किया जाता है,

मेरी टेबल आईडी | तत्वों --- ------------- 1 | AB, CD, EFG, HI 2 | जेके, एलएम, नहीं, पीक्यू 3 | rstuv, wxyz आईडी का चयन करें, अनावश्यक (string_to_array (तत्व, ',', ')) mytable से आईडी | एलेम --- ------ 1 | अब 1 | सीडी 1 | ईएफजी 1 | नमस्ते 2 | जेके ...

] आईडी | elem | एन.आर. --- ----------- 1 | ab | 1 1 | सीडी | 2 1 | efg | 3 1 | हाय | 4 2 | जेके | 1 ...

myTable
id | elements
--- ------------
1  |ab,cd,efg,hi
2  |jk,lm,no,pq
3  |rstuv,wxyz

select id, unnest(string_to_array(elements, ',')) AS elem
from myTable

id | elem
--- -----
1  | ab
1  | cd
1  | efg
1  | hi
2  | jk
...
] ]

Tbl t से लेफ्ट जॉइन लेटरल स्ट्रिंग_टो_टैबल (T.Elements, ',', ') के साथ एक (elem, nr) के रूप में सही

id | elem | nr
--- ------ ---
1  | ab   | 1
1  | cd   | 2
1  | efg  | 3
1  | hi   | 4
2  | jk   | 1
...

] ] टी के रूप में tbl से लेफ्ट लेटरल अनावश्यक (string_to_array (t.elements, ',', ')) के साथ एक (elem, nr) के रूप में सही ] ]

Tbl t से, अनावश्यक (string_to_array (t.elements, ',', ')) के साथ ordinality a (elem, nr)

]

Tbl t से, अनावश्यक (t.arr) ordinality a (elem, nr)

के साथ सादगी के लिए, डिफ़ॉल्ट कॉलम नाम का उपयोग किया जा सकता है: TBL से, अनावश्यक (ARR) ordinality A

के साथ
SELECT t.id, a.elem, a.nr
FROM   tbl t
LEFT   JOIN LATERAL string_to_table(t.elements, ',') WITH ORDINALITY AS a(elem, nr) ON true
] ]

से (चयन करें, regexp_split_to_table (तत्व, ',') tbl से elem के रूप में) t ] वर्तमान व्यवहार कार्यान्वयन विवरण का परिणाम है।

]

से ( चयन करें *, generate_subscripts (arr, 1) nr के रूप में से (tbl से गिरफ्तार) के रूप में id, string_to_array (तत्व, '' का चयन करें) ) उप

के लिए वास्तविक सरणी

, एक सरल संस्करण का उपयोग किया जा सकता है:
SELECT t.id, a.elem, a.nr
FROM   tbl AS t
LEFT   JOIN LATERAL unnest(string_to_array(t.elements, ',')) WITH ORDINALITY AS a(elem, nr) ON true
] ]

f_unnest_ord : ] रिटर्न सेटऑफ रिकॉर्ड भाषा SQL के रूप में अपरिवर्तनीय '$ 1 का चयन करें [i], i - array_lower ($ 1,1) 1 Generate_series (array_lower ($ 1,1), array_upper ($ 1,1)) i '

से संशोधित फ़ंक्शन इस प्रकार है:

रिटर्न सेटऑफ रिकॉर्ड भाषा SQL के रूप में अपरिवर्तनीय '$ 1 का चयन करें [i], i - array_lower ($ 1,1) 1, मैं Generate_series (array_lower ($ 1,1), array_upper ($ 1,1)) i '
SELECT t.id, a.elem, a.nr
FROM   tbl t, unnest(string_to_array(t.elements, ',')) WITH ORDINALITY a(elem, nr)
से ( *, F_unnest_ord_idx (ARR) का चयन करें से ( मान (1, '{ए, बी, सी}' :: पाठ []) - के लिए छोटा: '[1: 3] = {ए, बी, सी} , (2, '[5: 7] = {ए, बी, सी}') , (3, '[-9: -7] = {ए, बी, सी}') ) टी (आईडी, गिरफ्तारी) ) उप

आउटपुट
SELECT t.id, a.elem, a.nr
FROM   tbl t, unnest(t.arr) WITH ORDINALITY a(elem, nr)
आईडी | गिरफ्तारी | वैल | अध्यादेश | आयोजक ---- ----------------- ----- ------------ ----- 1 | {a, b, c} | a | 1 | 1 1 | {a, b, c} | बी | 2 | 2 1 | {a, b, c} | सी | 3 | 3 2 | [५: 7] = {ए, बी, सी} | a | 1 | 5 2 | [५: 7] = {ए, बी, सी} | बी | 2 | 6 2 | [५: 7] = {ए, बी, सी} | सी | 3 | 7 3 | [-9: -7] = {ए, बी, सी} | a | 1 | -9 3 | [-9: -7] = {ए, बी, सी} | बी | 2 | -8 3 | [-9: -7] = {ए, बी, सी} | सी | 3 | -7

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3