2012-06-29 22 views
23

information_schema.columns arasından seçerek benzer şekilde view sütun adlarını seçmeye çalışıyorum.Görünümün Sütunları Seç

Bunu yapmanın bir yolunu bulamıyorum. Bunu daha önce yapmış mıydı, yoksa mümkün olup olmadığını biliyor mu?

cevap

44

, veritabanı içinde nesneler hakkında meta tutar. INFORMATION_SCHEMA.COLUMNS, meta verileri geri almak için temel sys tablolarını kullanır (sp_helptext 'master.Information_schema.columns'). Herhangi bir görünümde kullanılan sütun adlarını seçmek için bu daha basit sorguyu kullanabilirsiniz.

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>' 
+4

, SSMS 2012 – Imad

+0

Benim için hiçbir şey döndürmedi. Teşekkürler! –

10

bu deneyin:

SELECT * 
FROM sys.views 

Bu, örneğin Gösterim verir - Sütunları gerekiyorsa, bunu kullanın:

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

emin değil misiniz INFORMATION_SCHEMA kullanarak bunu nasıl - Ben Bunu asla kullanmayın çünkü sys şema kataloğu görünümleriyle karşılaştırıldığında, "rahatsız edici" ve "bilinçsiz" olduğunu hisseder.

Mevcut tüm görünümlerin tüm ayrıntıları ve içerdikleri bilgiler için MSDN docs on the Catalog Views'a bakın. yani sadece

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

Bu, tüm görünümlerin adını verir, ancak görünümdeki sütunların adlarını değil. – 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

Bu çok ilginç bir sorgundur, ancak aslında döndürülen görünüm sütunlarını değil, sorgudaki sonuçları almak için kullanılan tablo sütunlarını döndürür. Bu nedenle, bu cevap için yanlıştır, ancak hiçbiri çok daha az değildir. – AnthonyVO

1

ınformatıon_schema görünümlerini kullanabilirsiniz (Sunucu 2000, en azından Sql altında) görüntülemeleri içerir information_schema.columns.Table_name

+0

yığınınıza hoş geldiniz, her ne zaman bir soruyu cevaplandırırsanız, her zaman çözümün kurşunun nasıl yardımcı olacağını açıklamaya çalışın. lütfen biraz zaman ayırın ve cevabınızı düzenleyin –

+1

'FROM' yan tümcesinde çoklu tablo yerine' JOIN' kullanabilirsiniz. Yani sorgu SELECT col.name FROM sys.columns col olacak JOIN sys.views vew ON col.object_id = vew.object_id WHERE vew.name = '' ' – Arulkumar

İlgili konular