SQL Server 2008 में sp_help
. की परिभाषा दिखाता है कि यदि कॉलम शून्य है और varbinary
में से एक है तो इसे "हां" वापस करने के लिए हार्डकोड किया गया है , varchar
, binary
, char
'FixedLenNullInSource' =
CASE
WHEN Type_name(system_type_id) NOT IN ( 'varbinary', 'varchar',
'binary', 'char' ) THEN '(n/a)'
WHEN is_nullable = 0 THEN @no
ELSE @yes
END
SQL Server 2000 में इसे अलग तरीके से
. के रूप में परिभाषित किया गया है 'FixedLenNullInSource' = case
when type_name(xtype) not in ('varbinary','varchar','binary','char')
Then '(n/a)'
When status & 0x20 = 0 Then @no
Else @yes END
/* ... */
from syscolumns
stats
का अर्थ syscolumns
में बिट्स SQL Server 2000 में पूरी तरह से प्रलेखित नहीं है, लेकिन मुझे एक SQL Server 7.0 SP4 अपग्रेड स्क्रिप्ट
मिली है। जो कॉलम मानों को निम्नानुसार सेट करता है (0x20
=32
दशमलव में)
+ CASE WHEN (type_name(xtype) IN ('text', 'image')
AND (colstat & 0x2000)!=0)
OR (type_name(xtype) IN ('binary', 'char', 'timestamp')
AND (typestat&1)=0 )
THEN 32 ELSE 0 END -- COL_FIXEDNULL, COL_NONSQLSUB
COL_FIXEDNULL
के लिए गुगल करते समय मुझे अधिक अतिरिक्त जानकारी नहीं मिली या COL_NONSQLSUB
लेकिन पता चला कि NULL
. का संग्रहण SQL सर्वर 7 में निश्चित लंबाई डेटाटाइप्स के लिए मान बदले गए। पिछले संस्करणों में निम्न तालिका के अनुसार शून्य निश्चित लंबाई डेटाटाइप्स को चुपचाप वेरिएबल में परिवर्तित कर दिया गया था।
+----------------------------+-----------+
| char | varchar |
| nchar | nvarchar |
| binary | varbinary |
| datetime | datetimn |
| float | floatn |
| int, smallint, and tinyint | intn |
| decimal | decimaln |
| numeric | numericn |
| money and smallmoney | moneyn |
+----------------------------+-----------+
KB 463166 में SQL सर्वर के लिए इस पर चर्चा की गई है (केवल फ़्रेंच में उपलब्ध ) और Sybase दस्तावेज़ीकरण को देखने से ऐसा प्रतीत होता है कि उस उत्पाद में अभी भी ऐसा ही है ।
SQL सर्वर 7.0 से आगे एक NULL
CHAR(100)
कॉलम ने पंक्ति के निश्चित लंबाई डेटा अनुभाग में घोषित निश्चित कॉलम की पूरी लंबाई को ले लिया (जब तक कि 2008 में विरल कॉलम पेश नहीं किए गए - जो व्यवहार को फिर से बदलते हैं)।
मुझे लगता है कि यह bit
syscolumns.status
. में दो अलग-अलग भंडारण प्रारूपों के बीच विभेदित।