查询以计算 Sql Server 视图中的列数
Posted
技术标签:
【中文标题】查询以计算 Sql Server 视图中的列数【英文标题】:Query to count number of columns in a Sql Server View 【发布时间】:2019-02-28 16:33:41 【问题描述】:就像我们有查询来查找表中的列数一样,是否有任何类似的查询来查找 Sql Server 视图中的总列数?
【问题讨论】:
【参考方案1】:更简单的是使用 sys.columns。
select count(*)
from sys.columns
where OBJECT_ID = OBJECT_ID('YourView')
【讨论】:
这确实更简单。其他方法的优点是:它们可以使用任何 ad-hoc 语句、加入源等。但 OP 实际上并没有要求这样做。所以从我这边+1 ;-)【参考方案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)
【讨论】:
啊,是的!忘记了 TVF(随 v2012 引入)。 +1 从我这边 我也是。我真的应该开始使用它了;比把所有东西都塞进一张临时桌子要容易得多。【参考方案3】:除了相当笨拙的过程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
的列...
【讨论】:
以上是关于查询以计算 Sql Server 视图中的列数的主要内容,如果未能解决你的问题,请参考以下文章
如何计算 Spark SQL(Databricks)中表中的列数?
M Power Query - 通过将值与两个参考列进行比较,有条件地转换动态列数中的值