用于计算SQL Server视图中列数的查询

o75abkj4  于 2022-12-22  发布在  SQL Server
关注(0)|答案(4)|浏览(203)

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

31moq8wy

31moq8wy1#

更简单的方法是使用sys.columns。

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

sauutmhj2#

与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)
8yoxcaq7

8yoxcaq73#

除了相当笨拙的过程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的列...

knsnq2tg

knsnq2tg4#

--这可能会有帮助

SELECT v.name, count(1) ColumnCount
FROM SYS.VIEWS v
INNER JOIN SYS.all_columns c ON v.object_id = c.object_id
WHERE v.name IN (SELECT name FROM sys.VIEWS)
GROUP BY v.name
ORDER BY v.name

SELECT name FROM sys.VIEWS,可以替换为视图名或返回视图名的查询

相关问题