Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

पूर्ण बाहरी जॉइन क्वेरी में गलत आउटपुट

आपने टिप्पणी अनुभाग में जो कहा है, उसके आधार पर, मुझे लगता है कि आपको कोड का एक टुकड़ा बदलने की जरूरत है...

  • मैं चाहता हूं कि उस कार्ड में field14 नहीं होना चाहिए 'Test card' . के रूप में


(t1.field14 <> 'Test Card' and t1.field14 is null)

=>

(t1.field14 <> 'Test Card'  OR  t1.field14 is null)


यह जांचने के लिए एक तर्क तालिका बनाएं कि क्या आप वाकई AND चाहते हैं या यदि आप OR want चाहते हैं

field14     | (field14 <> 'Test Card') | (t1.field14 is null) | A OR B | A AND B
--------------------------------------------------------------------------------
'Test Card' |            FALSE         |        FALSE         | FALSE  | FALSE
NULL        |            NULL          |        TRUE          | TRUE   | FALSE
'Any Card'  |            TRUE          |        FALSE         | TRUE   | FALSE


संपादित करें टिप्पणी करने के लिए फ़ॉलो अप करें

OR का उपयोग करना उपरोक्त कोड में TRUE उत्पन्न नहीं हो सकता है जब Field14 'Test card' . है . दोनों परीक्षणों से FALSE मिलता है और इसलिए परिणाम FALSE . होना चाहिए ।

आपको चीजों को चरणों में तोड़ने की जरूरत है। डिबगिंग एक समय में टुकड़ों का परीक्षण करके किया जाना चाहिए और धीरे-धीरे यह साबित करना चाहिए कि कौन सा काम अलग करने के लिए काम नहीं करता है। कभी भी सब कुछ एक साथ हल करने की कोशिश न करें, चीजों को व्यवस्थित तरीके से देखें।

यह परीक्षण चलाएँ...

SELECT
  *,
  CASE WHEN field14 <> 'Test Card'                     THEN 1 ELSE 0 END     Test1,
  CASE WHEN field14 IS NULL                            THEN 1 ELSE 0 END     Test2,
  CASE WHEN field14 <> 'Test Card' OR  field14 IS NULL THEN 1 ELSE 0 END     1_OR_2,
  CASE WHEN field14 <> 'Test Card' AND field14 IS NULL THEN 1 ELSE 0 END     1_AND_2
FROM
  tblCustomer



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL (sp_tables) का उपयोग करके SQL सर्वर में तालिकाओं और दृश्यों की सूची लौटाएं

  2. एक सीटीई चयन को तालिका मान उपयोगकर्ता परिभाषित फ़ंक्शन में बदलें

  3. संग्रहीत प्रक्रिया के साथ ODBC कॉल विफल - क्वेरी के माध्यम से पास करें

  4. एक विशिष्ट कॉलम अपडेट होने पर केवल ट्रिगर कैसे निष्पादित करें (एसक्यूएल सर्वर)

  5. तालिका परिभाषा दिखाने के लिए टी-एसक्यूएल क्वेरी?