【问题标题】:ISNULL with SQL Server 2008SQL Server 2008 的 ISNULL
【发布时间】:2013-02-22 10:24:00
【问题描述】:

我想将ISNULL 用于表的所有列。

像这样

SELECT ISNULL(* , 'NA') FROM #tbl 

我知道这是一种错误的方式,我必须分别指定每个列名才能使用ISNULL

但在我的情况下,#tbl 是一个临时表,列是动态创建的

像这样:

EXEC ('ALTER TABLE #tbl ADD [' + @bno + '] varchar(30)')

因此,我不能在选择查询中使用列名,因为列名总是不同的。

那我该怎么办?

【问题讨论】:

    标签: asp.net sql-server-2008 stored-procedures


    【解决方案1】:

    将您的动态 SQL 更改为:

    EXEC ('ALTER TABLE #tbl ADD [' + @bno + '] varchar(30) NULL DEFAULT(''NA'')')
    

    【讨论】:

      【解决方案2】:

      尝试从 tempdb.sys.columns 表中获取临时表的字段,然后遍历这些字段:

      select c.*
      from tempdb.sys.columns c
      inner join tempdb.sys.tables t ON c.object_id = t.object_id
      where t.name like '#TableName%'
      

      【讨论】:

        猜你喜欢
        • 2011-04-18
        • 1970-01-01
        • 2017-05-13
        • 1970-01-01
        • 1970-01-01
        • 2019-04-23
        • 2011-04-20
        • 1970-01-01
        • 2015-11-23
        相关资源
        最近更新 更多