我真的很困惑为什么这个简单的案例陈述不起作用。
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'
但我得到的结果相同。
答案 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 <> true
。 Please refer to the manual了解更多信息。