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

PostgreSQL रेंज प्रकारों में NULL सीमाओं को अनंत सीमाओं से अलग क्यों मानता है?

लेकिन वे नहीं करते। NULL एक वाक्यविन्यास सुविधा . है जब एक सीमा के बाउंड के रूप में उपयोग किया जाता है, जबकि -infinity / infinity वास्तविक मान हैं दायरे के दायरे में। एब्स्ट्रैक्ट वैल्यूज का मतलब किसी भी अन्य वैल्यू से कम / अधिक होता है, लेकिन मानों फिर भी (जिसे शामिल या बाहर किया जा सकता है)।

साथ ही, NULL किसी भी . के लिए काम करता है श्रेणी प्रकार, जबकि अधिकांश डेटा प्रकारों में -infinity . जैसे विशेष मान नहीं होते हैं / infinity . integer लें और int4range उदाहरण के लिए।

बेहतर समझ के लिए, pgsql-सामान्य में उस धागे पर विचार करें जो a_horse प्रदान किया गया :

हर डेटा प्रकार NULL हो सकता है , यहां तक ​​कि ऐसे डोमेन जो स्पष्ट रूप से NOT NULL . हैं . देखें:

जिसमें date शामिल है , निश्चित रूप से (जैसे -distinct-from#comment119506494_67610158">एड्रियन ने टिप्पणी की ):

test=> SELECT NULL::date, pg_typeof(NULL::date);
 date | pg_typeof 
------+-----------
      | date
(1 row)

लेकिन NULL discuss पर चर्चा करने की कोशिश कर रहा हूं मान . के रूप में (जब एक सीमा की सीमा के रूप में उपयोग किया जाता है) शुरू करने के लिए एक भ्रामक दृष्टिकोण है। यह कोई मूल्य नहीं है।

फिर से, 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. IF . पर या उसके पास सिंटैक्स त्रुटि पोस्टग्रेज करता है

  2. सर के बचाव में (और इसे कैसे कॉन्फ़िगर करें)

  3. पोस्टग्रेज़ मेरी क्वेरी में इंडेक्स का उपयोग क्यों नहीं कर रहा है

  4. पीजी-वादे के साथ बड़े पैमाने पर आवेषण

  5. तालिका के लिए केवल एक पंक्ति की अनुमति कैसे दें?