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

ANSI_NULLS और QUOTED_IDENTIFIER ने चीजों को नष्ट कर दिया। यह किस लिए हैं?

ठीक है, एप्लिकेशन डेवलपर के दृष्टिकोण से, ये सेटिंग्स क्या करती हैं:

QUOTED_IDENTIFIER

यह सेटिंग नियंत्रित करती है कि कैसे उद्धरण चिह्न ".." SQL कंपाइलर द्वारा व्याख्या की जाती है। जब QUOTED_IDENTIFIER चालू है तो उद्धरणों को कोष्ठक की तरह माना जाता है ([...] ) और SQL ऑब्जेक्ट नामों को उद्धृत करने के लिए उपयोग किया जा सकता है जैसे तालिका नाम, कॉलम नाम, आदि। जब यह बंद होता है (अनुशंसित नहीं), तो उद्धरणों को एपोस्ट्रोफ ('..' की तरह माना जाता है। ) और SQL कमांड में टेक्स्ट स्ट्रिंग्स को उद्धृत करने के लिए इस्तेमाल किया जा सकता है।

ANSI_NULLS

यह सेटिंग नियंत्रित करती है कि क्या होता है जब आप IS . के अलावा किसी अन्य तुलना ऑपरेटर का उपयोग करने का प्रयास करते हैं न्यूल पर। जब यह चालू होता है, तो ये तुलनाएं उस मानक का पालन करती हैं जो कहता है कि NULL से तुलना करना हमेशा विफल रहता है (क्योंकि यह कोई मान नहीं है, यह एक ध्वज है) और FALSE लौटाता है . जब यह सेटिंग बंद हो (वास्तव में नहीं अनुशंसित) आप इसे सफलतापूर्वक मान सकते हैं और = . का उपयोग कर सकते हैं , <> , आदि उस पर और उपयुक्त के रूप में TRUE वापस प्राप्त करें।

इसे संभालने का उचित तरीका इसके बजाय IS . का उपयोग करना है (ColumnValue IS NULL .. )।

CONCAT_NULL_YIELDS_NULL

यह सेटिंग नियंत्रित करती है कि स्ट्रिंग अभिव्यक्तियों में उपयोग किए जाने वाले एनयूएलएल "प्रस्तावित" करते हैं या नहीं। जब यह सेटिंग चालू होती है, तो यह मानक और एक व्यंजक जैसे 'some string' + NULL .. का पालन करती है हमेशा NULL लौटाता है। इस प्रकार, स्ट्रिंग संयोजनों की एक श्रृंखला में, एक NULL पूरे एक्सप्रेशन को NULL वापस करने का कारण बन सकता है। इसे बंद करने (भी, अनुशंसित नहीं) के कारण NULLs को इसके बजाय खाली स्ट्रिंग्स की तरह माना जाएगा, इसलिए 'some string' + NULL बस 'some string' . का मूल्यांकन करता है .

इसे संभालने का उचित तरीका COALESCE (या ISNULL) फ़ंक्शन के साथ है:'some string' + COALESCE(NULL, '') ..



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sql केस स्टेटमेंट Sql IN के भीतर

  2. mssql वर्चर को फ्लोट में बदलें

  3. ओलेड कनेक्शन अपवाद

  4. एक क्वेरी के वापसी मूल्य के साथ एक चर सेट करें

  5. VBScript SQL सर्वर 2005 से कनेक्ट करने के लिए और एक तालिका अद्यतन करने के लिए