【问题标题】:Tsql Null value missingTsql空值丢失
【发布时间】:2014-02-25 19:25:06
【问题描述】:

当我运行以下脚本时,我在第一个查询中获得了 Null 值,但在第二个查询中却没有。如何在第二个查询中包含 Null 值,同时排除这一个 uniqueidentifier 值?

drop table program_field

create table program_field
(p  uniqueidentifier
)

insert program_field values ('10C8BCA5-011C-48B9-BF46-03B88EBF5005'),
('16BD98AA-2323-4619-8BAF-0C19F90642FF'),
(Null)

select  p from program_field
select  p from program_field where p <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005'

【问题讨论】:

  • NULL '10C8BCA5-011C-48B9-BF46-03B88EBF5005' 是 FALSE 语句,因此您的第二个查询不会返回它。 NULL 永远不小于、大于或等于任何值。这就是为什么您需要对已经提供的答案中描述的 NULL 条件进行单独比较。

标签: sql-server tsql null uniqueidentifier


【解决方案1】:
select  p from program_field where p <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005' or p is null

【讨论】:

    【解决方案2】:

    您需要在where clause 中使用IS NULLIS NOT NULL 表达式来与null 值进行比较,例如:

    p &lt;&gt; '10C8BCA5-011C-48B9-BF46-03B88EBF5005' or p is null

    【讨论】:

      【解决方案3】:

      你可以这样做..

      select  p from program_field where coalesce(p,'') <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005'
      

      【讨论】:

      • 这会导致转换错误。无法将空字符串转换为唯一标识符。
      • 您可以将 ISNULL 替换为 COALESCE 以使其工作。
      • @AnupAgrawal:哎呀!没有完全阅读问题。现在更新!
      • @Masseur : 谢谢哥们!
      猜你喜欢
      • 2014-09-12
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      相关资源
      最近更新 更多