क्या NULL का एक प्रकार है?


जवाबों:


8

आकाशवाणी:

nullशाब्दिक एक प्रकार नहीं है, लेकिन

  1. null किसी भी प्रकार के लिए डाला जा सकता है, और यह आवश्यक हो सकता है जब

    • अतिभारित प्रक्रियाओं या कार्यों को कॉल करना
    • decodeफ़ंक्शन के रिटर्न प्रकार को नियंत्रित करना , जैसे:

      select decode('A','B',to_char(null),'A','1') from dual;
      DECODE('A','B',TO_CHAR(NULL),'A','1')
      -------------------------------------
      1
      
      select decode('A','B',to_number(null),'A','1') from dual;
      DECODE('A','B',TO_NUMBER(NULL),'A','1')
      --------------------------------------- 
                                            1
    • स्तंभ संचालक के प्रकार को नियंत्रित करना जैसे unionकि पहले क्वेरी ब्लॉक में शामिल है anull
  2. nullडेटाबेस में संग्रहीत मान में हमेशा एक प्रकार होता है:

    create table t(n integer, s varchar(10));
    insert into t values(null, null);
    
    select decode('A','B',n,'A','1') from t; 
    DECODE('A','B',N,'A','1')
    -------------------------
                            1
    
    select decode('A','B',s,'A','1') from t;
    DECODE('A','B',S,'A','1')
    -------------------------
    1

2
+1 जिज्ञासा के लिए आइए DUAL से NULL what_type_is_this चुनें; बेशक यह कोई व्यावहारिक उपयोगी उदाहरण नहीं है और मैंने अभी तक इसकी कोशिश नहीं की है, मैंने ऐसे मामलों में जातियों का उपयोग करना सीखा है।
bernd_k

6

SQL सर्वर, int

SELECT NULL AS foo INTO dbo.bar
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'bar'
DROP TABLE dbo.bar

MySQL, बाइनरी (0)

CREATE TABLE mydb.foo (select NULL AS bar);
EXPLAIN mydb.foo;
DROP TABLE mydb.foo;

+1 यह बहुत दिलचस्प है - मैंने यह मान लिया कि यह ओरेकल पर एक त्रुटि की तरह फेंक देगा
जैक कहते हैं कि topanswers.xyz

4
दिलचस्प खोज। हालाँकि, यह दर्शाता है कि उन DB इंजनों को उस तरह से टेबल बनाते समय एक डेटटाइप के लिए डिफ़ॉल्ट किया जाता है, जरूरी नहीं कि उन इंजनों में NULL का एक प्रकार हो। उदाहरण के लिए, यह त्रुटि बताती है कि SQL सर्वर वास्तव में NULL को अप्रमाणित नहीं मानता है।
निक चामास

2
@ निक select isnumeric(null)= 0 ... दिलचस्प
फैक्टर मिस्टिक

5

ओरेकल यह कुछ अर्थ में कुछ स्ट्रिंग प्रकार है।

एडीएस रीडर मुझे जो बताता है, वह है। यहाँ एक पॉवर्सशेल स्क्रिप्ट है:

[System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient") 
$ConnectionString = "Data Source=myTNS;User ID=myUSER;Password=myPassword" 
$conn=new-object System.Data.OracleClient.OracleConnection 
$conn.ConnectionString=$ConnectionString 
$conn.Open() 
$sql = "Select NULL xx from DUAL"
$cmd=new-object System.Data.OracleClient.OracleCommand($sql,$conn)

$r = $cmd.ExecuteReader()

$r.GetSchemaTable() | % { $_
}        

देता है कि

ColumnName               : XX
ColumnOrdinal            : 0
ColumnSize               : 0
NumericPrecision         : 0
NumericScale             : 0
DataType                 : System.String
ProviderType             : 22
IsLong                   : False
AllowDBNull              : True
IsAliased                : 
IsExpression             : 
IsKey                    : 
IsUnique                 : 
BaseSchemaName           : 
BaseTableName            : 
BaseColumnName           : 
ProviderSpecificDataType : System.Data.OracleClient.OracleString

ध्यान दें लाइन

प्रोवाइडरस्पेक्ट्रैडटाइप: System.Data.OracleClient.OracleString


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.