मैं अपने पास संग्रहीत प्रक्रिया में वैकल्पिक पैरामीटर लागू करने की कोशिश कर रहा हूं लेकिन मैं किसी समस्या में भाग रहा हूं। यहाँ मुद्दा वर्णन करने के लिए एक सरल प्रश्न है:WHERE खंड में SQL Coalesce
SET ANSI_NULLS OFF
DECLARE @MiddleName VARCHAR(20);
SET @MiddleName = NULL;
SELECT * FROM [Customer]
WHERE [LastName] = 'Torres'
AND [MiddleName] = COALESCE(@MiddleName, [MiddleName])
जब मैं इस क्वेरी मैं क्योंकि एक टोरेस [MiddleName] स्तम्भ में व्यर्थ है एक पंक्ति वापस पाने के लिए की जरूरत है चलाते हैं। लेकिन क्वेरी शून्य पंक्तियां लौटाती है। IFNULL() का उपयोग करना एक ही परिणाम उत्पन्न करता है। कोलासेस की खोज से, मैं इस धारणा के तहत था कि सभी अभिव्यक्ति पूर्ण होने पर न्यूल वापस कर दिया जाएगा। चूंकि मैं एक एसक्यूएल विशेषज्ञ नहीं हूं, मुझे लगता है कि मुझे कुछ याद आ रहा है, लेकिन यह क्या है .....
किसी भी मदद के लिए अग्रिम धन्यवाद।
मैं व्याख्या करने के लिए क्या आप सही तरीके से कह रहे हैं कोशिश कर रहा हूँ कुछ तरह की आवश्यकता है ...। मुझे लगता है कि आप निम्नलिखित का मतलब है: आप सभी पंक्तियों को कहने के लिए कोलेसे का उपयोग कैसे करते हैं यदि अन्यथा न केवल उस पंक्ति से पंक्तियां होती हैं। अगर ऐसा है तो मैं क्लॉजसे (@MiddleName, '') = '' या @ MiddleName = [MiddleName] जैसे खंड में कुछ ऐसा करूंगा। और ([MiddleName] = @MiddleName या [MiddleName] रिक्त है) – geoffrobinson