MYSQL case语句不能使用简单语句

时间:2018-02-12 17:51:57

标签: mysql

我真的很困惑为什么这个简单的案例陈述不起作用。

SELECT avg_weight,
    CASE avg_weight
        WHEN avg_weight BETWEEN 0 AND 2000 THEN 'data'
    ELSE 'No Data'
END AS wt_type 
FROM tbl_prices;

结果是这样的:

avg_weight     wt_type
1050           No data
833            No data
990            No data

该列为avg_weight, smallinit(4)

如果我将1050的值更改为0,那么我会在wt_type列中获取数据

我也试过

WHEN avg_weight > 0 AND avg_weight < 2000 THEN 'data'

但我得到的结果相同。

1 个答案:

答案 0 :(得分:1)

将您的CASE声明更改为:

CASE 
    WHEN avg_weight BETWEEN 0 AND 2000 THEN 'data'
ELSE 'No Data'

案例陈述有两种形式:

表格1:

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

表格2:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

因为在原始案例陈述中,您在第一个表单中指定了CASE值,因此您将1050值与when_value的{​​{1}}进行比较(对于您的第一条记录)和true所以它失败了。

相反,您需要表单2,其中仅指定1050 <> truePlease refer to the manual了解更多信息。

Here is a sqlfiddle showing this in action