查询以计数Sql Server视图中的列数

时间:2019-02-28 16:33:42

标签: sql-server view sql-server-2012

就像我们有查询来查找表中的列数一样,是否有任何类似的查询来找到Sql Server视图中的列总数?

3 个答案:

答案 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的列,否则...