postgre如何在case语句中强制转换SQL



我正试图将值NULL更改为字符串'geen-boetes'(荷兰语中"无罚款"的意思(,但它不允许我这样做,因为我无法将字符串保存为数值类型。我想尽一切可能的方法把CAST放在那里,但我找不到解决方案。有人知道我做错了什么吗?

SELECT CAST(s.naam AS varchar)
FROM spelers s;

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

我试图使用cast命令来解决它。

在某些条件下,表达式不能返回数值,而在其他条件下,则表达式必须始终返回相同的类型。解决方案在这种情况下是铸造平均

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

最新更新