在 SQL SERVER 2012 中将 NULL 转换为空白

Posted

技术标签:

【中文标题】在 SQL SERVER 2012 中将 NULL 转换为空白【英文标题】:Converting NULL to Blank in SQL SERVER 2012 【发布时间】:2015-08-04 07:06:46 【问题描述】:

我需要一些有关在 SQL SEVER 2012 中动态旋转的指导。我已经能够以我想要的方式成功旋转数据,但是在最终输出中,我看到了 NULL

目标

我想确保这些 NULL 值显示为空白。

下面是我在决赛中的样子。

=========================================================
Week     Type       kawasaki    Aston Martin
=========================================================
52      Two Wheel       2             NULL
52      Four Wheel      NULL            10

第一次尝试代码

我的主要数据集位于我用于动态旋转过程的#temp 表中。川崎和阿斯顿马丁是“模特”。

DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
    DECLARE @ColumnName AS NVARCHAR(MAX)


--Get distinct values of the PIVOT Column 
    SELECT @ColumnName=ISNULL(@ColumnName + ',','') 
                           + QUOTENAME(Model)
    FROM (SELECT DISTINCT Model FROM #Temp) AS Courses

    --Prepare the PIVOT query using the dynamic 
    SET @DynamicPivotQuery = 
      N'SELECT Week,Type,' + @ColumnName + '
        FROM (Select Sold,Week,Type,Model from #temp) src
            PIVOT(
                    SUM(ISNULL(Sold),0) 
                      FOR Model IN (' + @ColumnName + ') ) AS PVT'
    --Execute the Dynamic Pivot Query

            EXECUTE sp_executesql @DynamicPivotQuery;

使用上面的代码,我在我的SUM 聚合中使用ISNULL 进行了第一次天真的尝试,但它不起作用。

我的问题是,如何将NULL 转换为空白?

可选,因为这个问题可能会帮助其他人在我的情况下,如何将NULL 转换为 0(零)?

最终输出示例

=========================================================
Week     Type       kawasaki    Aston Martin
=========================================================
52      Two Wheel       2             Blank
52      Four Wheel      Blank           10

非常感谢您的帮助。

【问题讨论】:

试试REPLACECASE 尝试使用COALESCE。 SUM(COALESCE(Sold, 0)) 这是一个由报告工具更好地处理的演示问题。输出是否直接交给最终用户?有表示层吗? 【参考方案1】:
SELECT Week, Type, ISNULL(kawasaki , 'blanks') 
   AS kawasaki , ISNULL([Aston Martin], 'blanks') AS AstonMartin
   FROM  tablename

【讨论】:

我尝试在 @ColumnName 上工作,这是“模型”,但是我无法让它工作。您的解决方案仅适用于两个模型,但是如果我有 10 个不同的模型,那么它不会是一个好的解决方案。【参考方案2】:

如果你想将null转换为0,你有函数

选择 NVL(列,0) 从表中;

【讨论】:

以上是关于在 SQL SERVER 2012 中将 NULL 转换为空白的主要内容,如果未能解决你的问题,请参考以下文章

在SQL Server中将多行相同id的行合并为一行[关闭]

在 SQL Server 中将值分配给类似列后,使用 SSIS 将 Oracle 表列更新为 Null

在 SQL Server 2012 中将两个 nvarchar 列与 Unicode 文本进行比较

如何在sql server中将列转换为行

在 ASP.Net 中使用 SQL Server 2012 地理数据类型 - DataReader.GetFieldType(x) 返回 null

在 SQL Server 中将 Bool 转换为 Bit