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

SQL查询Discharge Date/Discharge Reason为NULL无结果问题咨询

问题根因

查询无返回结果是因为对SQL空值逻辑的理解错误:

  • SQL中的NULL是独立的特殊值标记,不是存储在字段里的字符串内容。你原语句里写的[Discharge Reason] like '%Null%'只能匹配字段值里真的包含"Null"四个英文字符的记录,完全无法识别真实存储为空的NULL值。
  • 你注释掉的CASE语句逻辑残缺,只定义了空值的返回分支,没有定义非空值的处理逻辑,直接放开注释也会导致非空的出院日期全部显示为NULL。
修正后可直接运行的查询脚本
/****** 适配SSMS(SQL Server)的修正查询脚本  ******/
SELECT 
    [EOCKey]
    ,[FacilityOrgKey]
    ,[Facility Code]
    ,[Facility Name]
    ,[DMH ID]
    ,[Consumer Full Name]
    ,[Open Admission]
    ,[Local Chart Number]
    ,[Admission Date]
    ,[Admission Reason Code]
    ,[Admission Comment]
    ,[Referral Source]
    ,[Discharge Date]
    -- 日期转文本,空值显示为空字符串,非空值转为yyyy-mm-dd标准格式文本
    ,ISNULL(CONVERT(VARCHAR(10), [Discharge Date], 23), '') AS [DC Date]
    ,[Discharge Reason Code]
    ,[Discharge Reason]
    ,[Discharge Comment]
FROM [Data_Central].[CIMOR].[EpisodeOfCare]
WHERE 
    [Facility Code] IN ('005','009','026')
    -- 筛选出院原因或出院日期为NULL的记录,NULL判断必须使用IS NULL语法
    AND ([Discharge Reason] IS NULL OR [Discharge Date] IS NULL)
关键知识点说明
  • 所有主流SQL环境中,判断字段是否为空必须使用字段名 IS NULL/字段名 IS NOT NULL语法,用=、LIKE、<>这类普通比较运算符操作NULL值,永远不会得到预期的匹配结果。
  • 日期类型转字符串时建议显式指定格式编码,SQL Server中样式码23对应通用的yyyy-mm-dd日期格式,可以避免不同实例默认区域设置不同导致的格式混乱。
  • 空值替换可以直接用内置函数简化写法:SQL Server的ISNULL()、通用标准SQL的COALESCE()都可以实现空值返回指定内容的效果,比写完整CASE语句更简洁不易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:09:48