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

如何在SQL CASE语句中用CAST解决NULL转字符串的类型冲突问题?

问题分析与修正

你的核心问题有两个:

  1. CASE语句语法错误:ELSE分支不能嵌套额外的THEN逻辑,原代码里的ELSE CAST(AVG(b.bedrag) AS varchar) IS NULL THEN 0完全不符合CASE的语法规则。
  2. 数据类型不匹配:要返回字符串'geen boetes',CASE的所有分支必须统一返回字符串类型——你之前的代码里,有值时返回数值类型,NULL时想返回字符串,这会导致类型冲突。

修正后的SQL代码

SELECT 
    s.naam, 
    CASE    
        WHEN AVG(b.bedrag) IS NOT NULL 
            THEN CAST(ROUND(AVG(b.bedrag), 2) AS VARCHAR)
            ELSE 'geen boetes'
    END as gemiddelde
FROM 
    spelers s 
LEFT OUTER JOIN 
    boetes b ON s.spelersnr = b.spelersnr
GROUP BY 
    s.naam
ORDER BY 
    s.naam

关键说明

  • 当AVG(b.bedrag)有值时,先通过ROUND保留两位小数,再用CAST把数值转换成字符串类型,确保和ELSE分支的返回类型一致。
  • 当AVG(b.bedrag)为NULL时,直接返回字符串'geen boetes',完美替换NULL值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:15:39