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

Sp_help में FixedLenNullInSource का क्या अर्थ है?

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 . में दो अलग-अलग भंडारण प्रारूपों के बीच विभेदित।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विदेशी कुंजी बाधा को अक्षम करना, अभी भी तालिका को छोटा नहीं कर सकता है? (एसक्यूएल सर्वर 2005)

  2. INNER JOIN का उपयोग करते समय अनपेक्षित डेटाबेस आउटपुट

  3. दिनांक + समय से दिनांक प्राप्त करने के लिए SQL सर्वर में सबसे प्रभावी तरीका?

  4. क्या SQL सर्वर परिणामी कॉलम नामों को जाने बिना पिवट कर सकता है?

  5. SQL में एकाधिक कॉलम अपडेट करें