【问题标题】:sql server difference between a blank column and column with value = 'NULL'sql server 空白列与 value = 'NULL' 列之间的区别
【发布时间】:2012-08-24 15:39:29
【问题描述】:

在 sql server 中,我看到一个奇怪的行为: 当我这样做时

select col1+ ' ' + cast(col2 as varchar(10)) as concat_col

它返回一个值为 NULL 的列(不是空白列)。

我怀疑这是因为 col2 的值 = NULL(不是空白列)。 那么这种行为的原因是什么?但更重要的是,与空白列相对的 value = NULL 列的含义是什么?我不认为有人进入表并使用 value = NULL 更新了所有列。

【问题讨论】:

    标签: sql-server-2008


    【解决方案1】:

    NULL 表示该字段没有任何值。您可以使用 ISNULL 函数将空值转换为您想要的值。以下内容有望为您提供正确的结果(不会给出空值)

    select ISNULL(col1,'')+ ' ' + cast(ISNULL(col2,'') as varchar(10)) as concat_col
    

    【讨论】:

    • 所以我猜这与 oracle 不同。当我在 toad 中打开 oracle 表时,null 和 '' 都显示为空白列
    • 在 Oracle 中,您必须使用 NVL 并且您可以使用两者都支持的 coalesce。更多内容this stackoverflow question
    【解决方案2】:

    Blank 是一个值,而 null 完全没有。

    认为零是一个数字,而 null 什么都不是。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 2020-12-10
      相关资源
      最近更新 更多