【问题标题】:Converting null values to blank space in sql在sql中将空值转换为空格
【发布时间】:2014-03-01 02:01:42
【问题描述】:

我在 sql 表中有几列是 nchar(44),值为 null,但我需要其中的空格我有一个像

这样的客户端要求
Poc1 * 45;
Poc2 * 45;
Poc3 * 45;.....poc24 * 45

当我在这些列上运行 sql 查询时,我有相同的列数据,其中包含 null,我应该得到长度为 45 的空格,每个空格都导出到文本文件。这可能吗?

string stringSql = " SELECT distinct  " +
",left([POC1]+'    ',44)" +
",left([POC2]+'    ',44)" +
",left([POC3]+'    ',44)" +
",[t_vrm] " +
",left([POC4]+'    ',44)" +
",left([POC5]+'    ',44)" +
",[t_zone_name]" +
",left([POC6]+'         ',44)" +
",[t_date_time_issued] " +
",left([POC7]+'         ',44)" +
",left([POC8]+'   ',44)" +
",left([POC9]+'   ',44)" +
",left([POC10]+'  ',44)" +
",left([POC11]+'  ',44)" +
",left([POC12]+'  ',44)" +
",left([POC13]+'  ',44)" +
",left([POC14]+'  ',44)" +
",left([POC15]+ '  ',44)" +
",left([POC16]+ '  ',44)" +

【问题讨论】:

标签: c# sql


【解决方案1】:

使用 ISNULL 函数:

...
,left(ISNULL([POCN], '')+'    ',44)
...

【讨论】:

    【解决方案2】:

    为了同时使用 MSSQL 和 Oracle,请使用 COALESCE

    COALESCE(MyNullColumn, '')
    

    你可以手动在单引号中加上 45 个空格!!

    【讨论】:

      【解决方案3】:

      Sql Server 中有一个设置,将 null 和 nil 视为等效:

      set concat_null_yields_null [on|off]
      

      不要使用它。如果您编写符合标准的关于 nullity 的 SQL 使用

      • coalesce(foo,'')
      • is [not] null

      等等,无论设置如何,您的代码都可以正常工作。

      【讨论】:

        猜你喜欢
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-05
        • 1970-01-01
        • 2017-07-10
        • 1970-01-01
        相关资源
        最近更新 更多