我正在为GameCenter类型的应用程序构建数据库。以下是为特定游戏构建每周排行榜的查询的开始。 “得分”作为INT存储在表格“游戏”中,但是另一个字段“得分数字”表示应如何在排行榜中显示得分。我正在使用SELECT IF语句通过在INT的开头连接'£'来将INT转换为货币。但是现在我需要多个案例(EG时间),我似乎无法让它发挥作用。由于某种原因,case语句总是进入ELSE,我不明白为什么。谁能看到我的错误?感谢
SELECT userName as "User Name",
score_timestamp as "Score Time",
case score
When scoreFormat = "time" Then SEC_TO_TIME(score)
When scoreFormat = "money" Then Concat('£', score)
Else score
end as HighScore
FROM ...
感谢。
答案 0 :(得分:0)
case
When scoreFormat = "time" Then SEC_TO_TIME(score)
When scoreFormat = "money" Then Concat('£', score)
Else score
end
as HighScore
答案 1 :(得分:0)
使用CASE
语句有两种方法。您可以将它用作swich / case:
CASE scoreFormat
WHEN 'time' THEN ...
ELSE ..
END
或者您可以将它与显式表达式一起使用:
CASE
WHEN scoreFormat = 'time' THEN ...
ELSE ...
END
您正在使用两者的组合,但这并不像您期望的那样。