[英]Return string when division result is zero
I have an SQL query like this: 我有这样的SQL查询:
SELECT
u.id,
tu.score/(CASE tu.mo_count WHEN 0 THEN NULL ELSE tu.mo_count END) AS score_avg
FROM tournament_userscore tu
INNER JOIN users u ON u.id = tu.user_id
WHERE tournament_id = 1
ORDER BY tu.score DESC
When tu.mo_count
is zero, Null has been replaced instead of zero. 当
tu.mo_count
为零时,将替换为Null而不是零。 How can I set a string like 'EMPTY'
for this line: 如何为该行设置类似
'EMPTY'
的字符串:
tu.score/(CASE tu.mo_count WHEN 0 THEN NULL ELSE tu.mo_count END) AS score_avg
I mean when division result is zero or empty , I want to return " anything " string. 我的意思是当除法结果为零或为空时 ,我想返回“ 任何 ”字符串。
You could use NULLIF and COALESCE if you don't want to use a CASE: 如果不想使用CASE,则可以使用NULLIF和COALESCE:
SELECT
u.id,
COALESCE(tu.score/NULLIF(tu.mo_count, 0), 0) AS score_avg
FROM tournament_userscore tu
INNER JOIN users u ON u.id = tu.user_id
WHERE
tournament_id = 1
ORDER BY
tu.score DESC;
Try moving the CASE
-statement outside: 尝试将
CASE
语句移到外部:
SELECT
u.id,
CASE WHEN tu.mo_count = 0 THEN 'EMPTY' ELSE (tu.score/tu.mo_count)::text END as score_avg
FROM tournament_userscore tu
INNER JOIN users u ON u.id = tu.user_id
WHERE tournament_id = 1
ORDER BY tu.score DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.