thepoy 发表于 2019-7-6 12:22

学习MySQL遇到了Case函数的问题




“评分”除了9.5的返回正确结果,其他都不正确,这是哪里写错了呢?
SELECT 电影名,导演,评分,
CASE 评分
WHEN 9.6 THEN 3
WHEN 9.5 THEN 2
WHEN 9.4 THEN 1
WHEN 9.3 THEN 0
ELSE -1
END AS 水平
FROM movies;

as849167276 发表于 2019-7-6 12:36

看看elseif

as849167276 发表于 2019-7-6 12:37

{:1_907:}勿看,菜鸟回复。错了。

zyl5664 发表于 2019-7-6 12:39

首先你这是mariaDB 称为mysql的话也不算错。其次你这个中文列名看着是真的...开发的确没见过,然后我也不知道你这为啥case when 有问题{:1_926:}

thepoy 发表于 2019-7-6 12:44

zyl5664 发表于 2019-7-6 12:39
首先你这是mariaDB 称为mysql的话也不算错。其次你这个中文列名看着是真的...开发的确没见过,然后我也不知 ...

中文列名是我试着玩的

thepoy 发表于 2019-7-6 12:45

zyl5664 发表于 2019-7-6 12:39
首先你这是mariaDB 称为mysql的话也不算错。其次你这个中文列名看着是真的...开发的确没见过,然后我也不知 ...

deepin apt mysql安装完后就是mariaDB,安装完我也有点懵逼

烽火戏諸侯 发表于 2019-7-6 14:03

casewhencharindex('9.6',评分)>0 then '3'
else 评分
endas水平
类似于这样

我这个是sql server的写法
我查询了一下资料,mysql 应该是可以的

繁花落尽秭归陈 发表于 2019-7-6 14:29

本帖最后由 繁花落尽秭归陈 于 2019-7-6 14:42 编辑

齐了怪了{:1_925:}

thepoy 发表于 2019-7-6 15:09

烽火戏諸侯 发表于 2019-7-6 14:03
casewhencharindex('9.6',评分)>0 then '3'
else 评分
endas水平

没学完,还不知道charindex是什么意思,但是当我把字段移到when里面时,就能正常执行了。
不知道你用sql的时候,字段放在case后面是否能够正常执行

SELECT 电影名, 导演,
CASE
WHEN 评分=9.6 THEN 3
WHEN 评分=9.5 THEN 2
WHEN 评分=9.4 THEN 1
WHEN 评分=9.3 THEN 0
ELSE -1
END AS 水平
FROM movies;

thepoy 发表于 2019-7-6 15:10

繁花落尽秭归陈 发表于 2019-7-6 14:29
齐了怪了

咋了,你怎么还把回复编辑了
页: [1] 2
查看完整版本: 学习MySQL遇到了Case函数的问题