就像我们有查询来查找表中的列数一样,是否有任何类似的查询来找到Sql Server视图中的列总数?
答案 0 :(得分:3)
使用sys.columns更简单。
select count(*)
from sys.columns
where OBJECT_ID = OBJECT_ID('YourView')
答案 1 :(得分:2)
类似于Larnu的评论,我倾向于表值函数
示例
Declare @tsql nvarchar(max) = N'Select * from YourView_Table_Or_Query'
Select column_ordinal
,name
,system_type_name
From sys.dm_exec_describe_first_result_set(@tsql,null,null )
-或计数
Select ColumnCnt=count(*)
From sys.dm_exec_describe_first_result_set(@tsql,null,null)
答案 2 :(得分:1)
除了相当笨拙的过程sp_describe_first_reuslt_set
之外,您还可以使用XML的通用功能:
SELECT (SELECT TOP 1 * FROM YourView FOR XML RAW, ELEMENTS XSINIL ,TYPE).value('count(/row/*)','int');
编辑:忘记添加ELEMENTS XSNIL
,否则该列会忽略值为NULL
的列,否则...