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

क्या यह कार्यान्वयन SQL-92 अनुरूप है?

नहीं, Oracle का नल का उपचार विशिष्ट है, बाकी सभी से अलग है, और ANSI मानकों के साथ असंगत है। हालांकि Oracle के बचाव में, यह शायद स्थिर हो गया था और इस उपचार के लिए प्रतिबद्ध था, इससे पहले कि ANSI मानक संगत हो!

यह सब इस तथ्य से शुरू होता है कि ओरेकल स्ट्रिंग डेटा के बाद एक वर्ण गणना के साथ तारों को स्टोर करता है। एक NULL को बिना किसी निम्न स्ट्रिंग डेटा के शून्य की वर्ण गणना द्वारा दर्शाया जाता है - जो बिल्कुल खाली स्ट्रिंग ('') के समान है। Oracle के पास उन्हें अलग करने का कोई तरीका नहीं है।

यह कुछ विचित्र व्यवहार की ओर ले जाता है, जैसे कि यह संयोजन मामला। ओरेकल में एक स्ट्रिंग की लंबाई वापस करने के लिए एक फ़ंक्शन LENGTH भी है, लेकिन इसे एक विपरीत तरीके से परिभाषित किया गया है, ताकि LENGTH ('') NULL को शून्य न लौटाए। तो:

LENGTH('abc') + LENGTH('') IS NULL

LENGTH('abc' || '') = 3

जो मुझे बुनियादी गणितीय सिद्धांतों का उल्लंघन लगता है।

बेशक, Oracle डेवलपर्स इसके इतने अभ्यस्त हो जाते हैं कि हम में से बहुत से लोग इसके बारे में कुछ भी गलत या अजीब नहीं देख सकते हैं - कुछ वास्तव में तर्क देंगे कि बाकी दुनिया गलत है और एक खाली स्ट्रिंग और एक 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. संख्याओं के अनुक्रम से अपरिवर्तनीय मूल्य के अंतराल प्राप्त करें

  2. 24 घंटे के समय को 12 घंटे प्लस AM/PM इंडिकेशन Oracle SQL में बदलें

  3. एसक्यूएल और अद्वितीय एन-कॉलम संयोजन

  4. Oracle विश्लेषणात्मक कार्य - एक विंडोिंग क्लॉज को रीसेट करना

  5. java.sql.SQLException:Io अपवाद:oracle के साथ JDBC कनेक्शन के दौरान रीड कॉल से माइनस वन मिला