You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中为UniqueIdentifier类型参数传递Null值无结果问题

解决SQL查询Emp表无结果的问题

你当前执行的SQL语句:

Declare @ID uniqueidentifier =Null

select * from Emp where EmpID=@ID

之所以查不到结果,是因为SQL里**Null和任何值(包括另一个Null)用=比较的结果都是Unknown**,哪怕你的Emp表中存在EmpID为Null的记录,这个条件也匹配不到。

给你几个解决思路:

  • 如果你要找EmpID为Null的记录,直接把条件改成where EmpID IS NULL,或者用ISNULL/COALESCE统一处理Null值:
    Declare @ID uniqueidentifier =Null
    select * from Emp where ISNULL(EmpID, '00000000-0000-0000-0000-000000000000') = ISNULL(@ID, '00000000-0000-0000-0000-000000000000')
    
  • 如果@ID本来应该有实际的GUID值,检查变量赋值逻辑,确保给@ID传入了有效的uniqueidentifier值,比如:
    Declare @ID uniqueidentifier = '12345678-1234-1234-1234-1234567890AB'
    select * from Emp where EmpID=@ID
    
  • 不推荐用SET ANSI_NULLS OFF来强制让Null=Null成立,这会破坏SQL的标准行为,容易引发其他查询的逻辑问题。

内容的提问来源于stack exchange,提问作者at9063

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:39:38