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

问题描述 投票:0回答:3

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

sql-server view sql-server-2012
3个回答
4
投票

更简单的是使用sys.columns。

select count(*)
from sys.columns
where OBJECT_ID = OBJECT_ID('YourView')

2
投票

与Larnu的评论相似,我更倾向于使用Table-Valued-Function

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)  

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

© www.soinside.com 2019 - 2024. All rights reserved.