जब आप केवल समानता या असमानता का परीक्षण नहीं कर रहे हैं, तो मुझे कोई भी और सभी बहुत उपयोगी लगते हैं। विचार करें
'blah' LIKE ANY (ARRAY['%lah', '%fah', '%dah']);
जैसा कि इस प्रश्न के लिए मेरे उत्तर का उपयोग किया गया है ।
ANY
, ALL
और उनके निषेध कोड को बहुत सरल कर सकते हैं जिसके लिए अन्यथा गैर-तुच्छ उपश्रेणियों या सीटीई की आवश्यकता होती है, और वे मेरे विचार में काफी कम उपयोग किए जाते हैं।
उस पर विचार करें ANY
किसी भी ऑपरेटर के साथ काम करेगा। यह LIKE
. के साथ बहुत आसान है और ~
, लेकिन tsquery, सरणी सदस्यता परीक्षण, hstore कुंजी परीक्षण, और बहुत कुछ के साथ काम करेगा।
'a => 1, e => 2'::hstore ? ANY (ARRAY['a', 'b', 'c', 'd'])
या:
'a => 1, b => 2'::hstore ? ALL (ARRAY['a', 'b'])
बिना ANY
या ALL
आपको शायद उन्हें VALUES
. पर एक सबक्वायरी या CTE के रूप में व्यक्त करना होगा एक परिणाम उत्पन्न करने के लिए कुल मिलाकर सूची। ज़रूर, अगर आप चाहें तो ऐसा कर सकते हैं, लेकिन मैं ANY
के साथ रहूंगा ।
यहां एक वास्तविक चेतावनी है:पुराने पीजी संस्करणों पर, यदि आप ANY( SELECT ... )
लिख रहे हैं , आप लगभग निश्चित रूप से EXISTS (SELECT 1 FROM ... WHERE ...)
के साथ प्रदर्शन के मामले में बेहतर होने जा रहे हैं . यदि आप ऐसे संस्करण पर हैं जहां अनुकूलक ANY (...)
शामिल हों तो आपको चिंता करने की आवश्यकता नहीं है। यदि संदेह है, तो EXPLAIN
देखें आउटपुट।