【问题标题】:Query to count number of columns in a Sql Server View查询以计算 Sql Server 视图中的列数
【发布时间】:2019-02-28 16:33:41
【问题描述】:

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

【问题讨论】:

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


    【解决方案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 的列...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多