【发布时间】:2019-02-28 16:33:41
【问题描述】:
就像我们有查询来查找表中的列数一样,是否有任何类似的查询来查找 Sql Server 视图中的总列数?
【问题讨论】:
标签: sql-server view sql-server-2012
就像我们有查询来查找表中的列数一样,是否有任何类似的查询来查找 Sql Server 视图中的总列数?
【问题讨论】:
标签: sql-server view sql-server-2012
更简单的是使用 sys.columns。
select count(*)
from sys.columns
where OBJECT_ID = OBJECT_ID('YourView')
【讨论】:
与 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)
【讨论】:
除了相当笨拙的过程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 的列...
【讨论】: