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

Oracle PL/SQL स्ट्रिंग तुलना समस्या

जैसा कि फिल ने उल्लेख किया है, खाली स्ट्रिंग को NULL के रूप में माना जाता है, और NULL किसी भी चीज़ के बराबर या असमान नहीं है। यदि आप खाली स्ट्रिंग्स या NULLs की अपेक्षा करते हैं, तो आपको NVL() . के साथ उन्हें संभालना होगा :

 DECLARE
 str1  varchar2(4000);
 str2  varchar2(4000);
 BEGIN
   str1:='';
   str2:='sdd';
-- Provide an alternate null value that does not exist in your data:
   IF(NVL(str1,'X') != NVL(str2,'Y')) THEN
    dbms_output.put_line('The two strings are not equal');
   END IF;
 END;
 /

शून्य तुलनाओं के बारे में:

NULLS पर Oracle 12c प्रलेखन के अनुसार, IS NULL . का उपयोग करके अशक्त तुलना या IS NOT NULL TRUE . का मूल्यांकन करें या FALSE . हालांकि, अन्य सभी तुलनाओं का मूल्यांकन UNKNOWN . होता है , नहीं FALSE . दस्तावेज़ीकरण आगे कहता है:

<ब्लॉककोट>

एक शर्त जो UNKNOWN का मूल्यांकन करती है वह लगभग FALSE की तरह काम करती है। उदाहरण के लिए, WHERE क्लॉज में एक शर्त के साथ एक SELECT स्टेटमेंट जो UNKNOWN का मूल्यांकन करता है, कोई पंक्तियाँ नहीं देता है। हालाँकि, UNKNOWN का मूल्यांकन करने वाली एक शर्त FALSE से भिन्न होती है, जिसमें UNKNOWN स्थिति मूल्यांकन पर आगे के संचालन का मूल्यांकन UNKNOWN पर किया जाएगा। इस प्रकार, NOT FALSE का मूल्यांकन TRUE होता है, लेकिन NOT UNKNOWN का मूल्यांकन UNKNOWN से होता है।

Oracle द्वारा एक संदर्भ तालिका प्रदान की जाती है:

Condition       Value of A    Evaluation
----------------------------------------
a IS NULL       10            FALSE
a IS NOT NULL   10            TRUE        
a IS NULL       NULL          TRUE
a IS NOT NULL   NULL          FALSE
a = NULL        10            UNKNOWN
a != NULL       10            UNKNOWN
a = NULL        NULL          UNKNOWN
a != NULL       NULL          UNKNOWN
a = 10          NULL          UNKNOWN
a != 10         NULL          UNKNOWN

मैंने यह भी सीखा कि हमें यह मानकर PL/SQL नहीं लिखना चाहिए कि खाली तार हमेशा NULL के रूप में मूल्यांकन करेंगे:

<ब्लॉककोट>

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle सेकंड को घंटे में बदलें:मिनट:सेकंड

  2. Oracle में समय क्षेत्र बदलने के 4 तरीके

  3. Oracle 10g में एक टेबल कॉलम का नाम कैसे बदलें

  4. Oracle (11.2.0.1):उस पंक्ति की पहचान कैसे करें जो वर्तमान में अद्यतन विवरण द्वारा अद्यतन की गई है

  5. Oracle में एक महीने में दिनों की संख्या प्राप्त करने के 2 तरीके