Sys.columns और INFORMATION_SCHEMA.COLUMNS विभिन्न स्तंभों को क्यों प्रदर्शित करते हैं


11

मैं एक विशेष नाम के साथ कॉलम प्रदर्शित करने के लिए दो तरीकों की कोशिश कर रहा हूं:

  1. INFORMATION_SCHEMA.COLUMNS

    SELECT *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME='SUPPLIER_NAME';
    
  2. SYS.COLUMNS

    SELECT *
    FROM SYS.COLUMNS
    WHERE NAME='SUPPLIER_NAME'
    

प्रश्न अलग-अलग आउटपुट क्यों प्रदर्शित करते हैं?

एसएसएमएस स्क्रीन हड़पने


मेरे डेटाबेस में मेरे पास केवल 4 कॉलम हैं। लेकिन sys.columns का उपयोग करने से यह बीमार हो जाता है 5 रिकॉर्ड नहीं मैं नहीं क्यों?
विनोथ _S

3
INFORMATION_SCHEMA.COLUMNSकेवल sys.columnsउस पर एक दृश्य INNER JOINहै sys.objectsऔर तालिका या दृश्य के प्रकार के ऑब्जेक्ट को प्रतिबंधित करता है। मेरा अनुमान है कि sys.columnsइस प्रतिबंध में आपका एक रिकॉर्ड समाप्त हो गया है।
मार्क सिनकिंसन

1
वे दोनों थोड़े अलग हैं। कृपया mssqltips.com/sqlservertutorial/183/informationschemacolumns और msdn.microsoft.com/en-us/library/ms176106.aspx पढ़ें। मैं कहूंगा कि पोस्ट करने से पहले आपको पढ़ना चाहिए था
Shanky

जवाबों:


14

के बीच का अंतर INFORMATION_SCHEMA.COLUMNSऔर sys.columnsवे वस्तु प्रकार हैं जो वे कवर करते हैं। INFORMATION_SCHEMA.COLUMNSतालिकाओं और विचारों तक सीमित है। आप ऐसा करने के पीछे इसके कोड पर एक नज़र डाल सकते हैं:

EXEC sp_helptext [INFORMATION_SCHEMA.COLUMNS]

यदि आप उस खंड में नीचे देखेंगे जहां आप देखेंगे

o.type IN ('U', 'V')

यह वह जगह है जहाँ यह केवल तालिकाओं और विचारों तक सीमित है।

यदि आप तब sys.columns की परिभाषा को देखते हैं, तो आप देखेंगे कि इसमें कई अन्य वस्तुओं के कॉलम शामिल हैं:

  • टेबल-वैल्यू असेंबली फ़ंक्शंस (FT)
  • इनलाइन तालिका-मूल्यवान SQL फ़ंक्शंस (IF)
  • आंतरिक तालिकाओं (आईटी)
  • सिस्टम टेबल (S)
  • तालिका-मूल्यवान SQL फ़ंक्शंस (TF)

इसे चलाएं और आप देख पाएंगे कि अतिरिक्त वस्तु क्या है और यह किस प्रकार की है।

SELECT OBJECT_SCHEMA_NAME(object_id), OBJECT_NAME(object_id), 
    OBJECTPROPERTYEX(object_id, 'BASETYPE'), *
FROM sys.columns
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.