【问题标题】:In SMSS what's the difference between NULL and nothing, in a query result?在 SMSS 中,查询结果中 NULL 和 nothing 有什么区别?
【发布时间】:2013-02-18 16:03:05
【问题描述】:

我知道这可能是一个新手问题,但我想知道为什么我有时会在结果中得到 NULL,有时它只是完全空白 - 它们不应该都是 null 吗?

【问题讨论】:

  • "nothing" 正如你所说的是一个 空字符串 ("") - 但这仍然是一个 值 (而 NULL 是没有值)
  • 我一直认为 NULL 是“从未提供过任何值”,因为在某一时刻可能没有任何值,但用户现在已将其设置为空集“”。我也看不到任何 .net 术语,因为对象的实例尚未被实例化。它不为空;没什么。
  • 在编写包含“NULL”值列上的子句的查询时要小心。 SELECT * FROM sometable WHERE LENGTH(string) < 20; 不会返回例如字符串为 'NULL' 的行。
  • @marc_s - 好的理解 - 它是空字符串。谢谢!

标签: sql ssms sql-server-2008


【解决方案1】:

如您所见,Remarks 列没有 yellow 的背景色,这表明它不是 NULL。 (NULL 值有。)

它包含一个空字符串''(或者可能是空格),它与NULL 不同,因为空字符串设置为空,而NULL 不是设置(什么都没有)。

【讨论】:

    【解决方案2】:

    在 Oracle 中,空字符串被视为 NULL。 SQL Server 将其视为字符串值。

    主要区别在于,在 SQL Server 中,您可以从类似的东西返回结果

    select * from mytable where myfield = ''
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      相关资源
      最近更新 更多