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

SQL Server添加AND条件指定RadioFinalizedBy后查询结果为空求助

SQL Server查询无结果排查(RadioFinalizedBy条件失效)

问题背景

原始查询可正常返回2023年3月扫描完成后超过24小时才完成放射审核的记录:

SELECT  RadioFinalizedBy, ProcedureType, DATEDIFF(HOUR, ScanCompleteDate,RadioFinalisedDate) As 'Date Diff', 
        ScanCompleteDate, RadioFinalisedDate
FROM    VW_RisOrderTable
WHERE   YEAR(ScanCompleteDate) = 2023
AND     MONTH(ScanCompleteDate) = 03
AND     DATEDIFF(HOUR, ScanCompleteDate,RadioFinalisedDate) > 24;

但添加AND RadioFinalizedBy = 'Yasser Mahfouz'条件后,查询无结果返回;甚至执行最简单的SELECT * FROM VW_RisOrderTable WHERE RadioFinalizedBy = 'Yasser Mahfouz';也无结果,且确认存在符合条件的记录。

排查解决方案

  • 检查字符串空格或不可见字符:字段值可能包含前后空格、全角空格或换行符,导致精确匹配失败。可通过以下语句验证:

    -- 查看字段长度,对比预期长度
    SELECT RadioFinalizedBy, LEN(RadioFinalizedBy) FROM VW_RisOrderTable WHERE RadioFinalizedBy LIKE '%Yasser Mahfouz%';
    -- 用TRIM去除前后空格后匹配
    SELECT * FROM VW_RisOrderTable WHERE TRIM(RadioFinalizedBy) = 'Yasser Mahfouz';
    
  • 验证大小写敏感性:若数据库或列的排序规则为区分大小写(如Latin1_General_CS_AS),大小写不匹配会导致查询失败。可强制使用不区分大小写的排序规则测试:

    SELECT * FROM VW_RisOrderTable WHERE RadioFinalizedBy COLLATE Latin1_General_CI_AS = 'Yasser Mahfouz';
    
  • 检查视图定义:VW_RisOrderTable是视图,RadioFinalizedBy字段可能存在转换、拼接或过滤逻辑,导致实际存储值与预期不符。执行以下语句查看视图定义:

    EXEC sp_helptext 'VW_RisOrderTable';
    
  • 排查字符编码差异:字段值可能包含视觉上无法区分的特殊编码字符,可通过ASCII码对比验证:

    SELECT RadioFinalizedBy, 
           ASCII(SUBSTRING(RadioFinalizedBy,1,1)) AS 实际首字符ASCII,
           ASCII(SUBSTRING('Yasser Mahfouz',1,1)) AS 预期首字符ASCII
    FROM VW_RisOrderTable WHERE RadioFinalizedBy LIKE '%Yasser%';
    
  • 测试Unicode字符串匹配:若RadioFinalizedBy为nvarchar类型,未加N前缀的非Unicode常量可能导致隐式转换失败。尝试使用Unicode常量:

    SELECT * FROM VW_RisOrderTable WHERE RadioFinalizedBy = N'Yasser Mahfouz';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:43:13