array_length()
दो की आवश्यकता है पैरामीटर, दूसरा सरणी का आयाम है:
array_length(id_clients, 1) > 0
तो:
IF array_length(id_clients, 1) > 0 THEN
query := query || format(' AND id = ANY(%L))', id_clients);
END IF;
इसमें खाली सरणी और both दोनों शामिल नहीं हैं शून्य।
या cardinality()
पोस्टग्रेज 9.4 या बाद के संस्करण में। @bronzenose द्वारा जोड़ा गया उत्तर देखें।
लेकिन अगर आप किसी क्वेरी को EXECUTE
. के साथ चलाने के लिए जोड़ रहे हैं , उपयोग
. के साथ मानों को पास करना बेहतर होगा खंड। उदाहरण:
- एक से अधिक उप-चयन पैरामीटर के रूप में `का उपयोग करके निष्पादित करें`
- EXECUTE FORMAT का उपयोग कैसे करें ... पोस्टग्रेज फ़ंक्शन में उपयोग करना
BTW, स्पष्ट रूप से जाँचने के लिए कि क्या कोई सरणी खाली है (जैसे आपका शीर्षक कहता है - लेकिन वह नहीं है आपको यहां क्या चाहिए) बस इसकी तुलना एक खाली सरणी से करें:
id_clients = '{}'
बस इतना ही। आपको मिलता है:
सच
.. सरणी खाली हैNULL
.. सरणी शून्य हैगलत
.. कोई अन्य मामला (सरणी में तत्व हैं - भले ही केवल नल तत्व हों)