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

SQL Server:优先取多表手机号,双空时返回空白而非NULL的问题

问题分析

你的CASE语句逻辑顺序出错了——当dbo.vwPersonDistinctPhone.phone为NULL时,不管PERSONAL_PHONE_NUMBER是不是NULL,都会直接返回PERSONAL_PHONE_NUMBER,导致两者都为NULL时,根本轮不到返回空格的条件执行,所以结果还是会出现NULL。

两种解决方法

方法一:调整CASE条件顺序

按优先级依次判断非NULL的情况,最后兜底返回空格:

SELECT 
    CASE
        -- 优先取视图里的非NULL手机号
        WHEN dbo.vwPersonDistinctPhone.phone IS NOT NULL THEN dbo.vwPersonDistinctPhone.phone
        -- 视图值为NULL时,取PERSONAL_PHONE_NUMBER的非NULL值
        WHEN PERSONAL_PHONE_NUMBER IS NOT NULL THEN PERSONAL_PHONE_NUMBER
        -- 两者都为NULL时返回空格
        ELSE ' '
    END AS phone

方法二:用COALESCE函数更简洁

SQL Server的COALESCE函数会返回参数列表里第一个非NULL的值,所有参数都为NULL时返回最后一个参数,完美匹配你的需求,代码更简洁:

SELECT COALESCE(dbo.vwPersonDistinctPhone.phone, PERSONAL_PHONE_NUMBER, ' ') AS phone

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:25:06