2012-06-29 14 views
23

मैं information_schema.columns से चुनने के समान ही view के कॉलम नामों का चयन करने का प्रयास कर रहा हूं।एक दृश्य के कॉलम का चयन करें

मुझे ऐसा करने का कोई तरीका नहीं दिख रहा है। क्या किसी और ने यह पहले किया है या पता है कि यह भी संभव है?

उत्तर

44

information_schema.columns.Table_name (कम से कम Sql के तहत सर्वर 2000) दृश्य भी शामिल है, तो बस

SELECT * FROM information_schema.columns WHERE table_name = 'VIEW_NAME' 
+4

एसएसएमएस 2012 – Imad

+0

में कुछ भी नहीं देता है मेरे लिए काम करता है। धन्यवाद! –

10

इस प्रयास करें:

SELECT * 
FROM sys.views 

यह आपको इस तरह के रूप दृश्य देता है - अगर आप स्तंभों की जरूरत है, इस का उपयोग करें:

SELECT * 
FROM sys.columns 
WHERE object_id = OBJECT_ID('dbo.YourViewNameHere') 

सुनिश्चित नहीं हैं कि यह कैसे INFORMATION_SCHEMA उपयोग कर सकते हैं - मैं कभी भी इसका उपयोग न करें, क्योंकि sys स्कीमा कैटलॉग दृश्यों की तुलना में यह "गुंजाइश" और अनजान महसूस करता है।

उपलब्ध सभी विचारों के सभी विवरणों के लिए MSDN docs on the Catalog Views देखें और उनमें कौन सी जानकारी हो सकती है।

+0

यह मुझे सभी विचारों का नाम देता है, लेकिन दृश्य में कॉलम के नाम नहीं। – steventnorris

0
SELECT distinct VIEW_NAME 
    ,TABLE_SCHEMA 
    ,TABLE_NAME 
    ,COLUMN_NAME 
FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE 
--WHERE TABLE_SCHEMA = 'Person' 
ORDER BY 
    VIEW_NAME 
    ,TABLE_SCHEMA 
    ,TABLE_NAME 
    ,COLUMN_NAME 
+0

यह एक बहुत ही रोचक क्वेरी है लेकिन यह वास्तव में क्वेरी में परिणाम प्राप्त करने के लिए उपयोग किए गए टेबल कॉलम देता है, न कि व्यू कॉलम लौटाया जाता है। इसलिए यह उत्तर के लिए गलत है लेकिन बहुत कम उपयोगी नहीं है। – AnthonyVO

1

INFORMATION_SCHEMA दृश्यों का उपयोग डेटाबेस के भीतर वस्तुओं के बारे में मेटाडाटा रखती है। INFORMATION_SCHEMA.COLUMNS मेटाडेटा को पुनः प्राप्त करने के लिए अंतर्निहित sys तालिकाओं का उपयोग करता है (sp_helptext 'master.Information_schema.columns' जांचें)। आप किसी भी दृश्य में इस्तेमाल किए गए कॉलम नामों का चयन करने के लिए इस सरल क्वेरी का उपयोग कर सकते हैं।

SELECT col.name 
FROM <db_name>.sys.columns col, <db_name>.sys.views vew 
WHERE col.object_id = vew.object_id 
AND vew.name = '<view_name>' 
+0

स्टैक में आपका स्वागत है, जब भी आप किसी समस्या का उत्तर देते हैं तो हमेशा यह बताने की कोशिश करें कि समाधान पूछताछ में कैसे मदद करेगा। कृपया कुछ समय लें और अपना उत्तर –

+1

संपादित करें 'FROM' खंड पर एकाधिक तालिकाओं के बजाय, आप' जॉइन 'का उपयोग कर सकते हैं। तो क्वेरी sy..columns col से जॉइन sy.views को col.object_id = vew.object_id पर ve col.name = '' ' – Arulkumar

संबंधित मुद्दे