यदि आप एक में शामिल होने है कि इस
छोड़कर खेतों कि शून्य
SELECT T1.KeyField1, T1.KeyField2, T2.Field3
FROM T1 JOIN T2 ON T1.KeyField1 = T2.KeyField1 AND T1.KeyField2 = T2.KeyField2
तरह लग रहा है कर रहे हैं वहाँ एक रास्ता NULLS परिणामों के समान मिलान करने के लिए अनुमति नहीं करने के लिए है में शामिल हों पर से मेल खाता है कि इस प्रश्न के वापस होगा
SELECT T1.KeyField1, T1.KeyField2, T2.Field3
FROM T1 JOIN T2 ON T1.KeyField1 = T2.KeyField1 AND T1.KeyField2 = T2.KeyField2
AND T1.KeyField2 IS NOT NULL AND T2.KeyField2 IS NOT NULL
संपादित
012,351,मैंने वास्तव में गलत सवाल पूछा .... मुझे दोबारा प्रयास करने दो।
हम पुराने डेटा को एक नया डेटा तुलना कर रहे हैं और रिकॉर्ड की तलाश कर रहे हैं जहां पंक्तियां बिल्कुल समान हैं।
तो दोनों तालिकाओं में परिभाषित किया गया:
CREATE TABLE [Table](
[Identifier] [int] IDENTITY(1,1) NOT NULL,
[Key1] [varchar](50) NOT NULL,
[Data1] [varchar](50) NULL,
[Data2] [varchar](50) NULL
अगर मैं क्वेरी कार्य करें:
DELETE
FROM T1 JOIN T2 ON T1.Key1 = T2.Key1
AND T1.Data1 = T2.Data2 AND T1.Data2 = T2.Data2
दें
T1 & T2
| Key1 | Data1 | Data2 |
| 1000 | 123 Main St | <NULL> |
| 1001 | 456 High St | FLOOR 2 |
यह टी 1 से डुप्लिकेट रिकॉर्ड 1000 के बाद से नहीं निकलेगी Data2 है शून्य।
शामिल होने में जादू मूल्य का उपयोग करने के बाहर, क्या इनका तुलना करने का कोई और तरीका है?
मैं समझता हूं कि सलाहकारों को सभी नलिकाओं को '' के रूप में सम्मिलित करने के लिए कोड को फिर से लिखना चाहिए, लेकिन इस बिंदु पर यह एक बड़ा उपक्रम है। मैं मतभेदों को देखने के लिए पंक्ति को हैशिंग भी देख रहा हूं।
अधिकार के साथ शुरू NULLs पर कुछ दिलचस्प तर्क पढ़ सकते हैं। मुझे याद रखना चाहिए था। कभी-कभी हमें NULL = NULL की तुलना भी करनी पड़ती है।चूंकि SET ANSI_NULLS OFF अंततः एक त्रुटि उत्पन्न करने का कारण बनता है, क्या ISNULL (T1.Field1, '-9999') = ISNULL (T2.Field2, '-9999') –