Que*_*low 6 mysql expression case conditional-statements
我有一个包含CASE表达式语句的过程,如下所示:
BEGIN
....
WHILE counter < total DO
....
CASE ranking
WHEN 1 OR 51 OR 100 OR 167 THEN SET
project_name = 'alpha';
WHEN 2 THEN SET
project_name = 'beta';
WHEN 10 OR 31 OR 40 OR 61 THEN SET
project_name = 'charlie';
....
ELSE SET
project_name = 'zelta';
END CASE;
INSERT INTO project (id, name) VALUES (LAST_INSERT_ID(), project_name);
SET counter = counter + 1;
END WHILE;
END
$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
当我调用上述过程时,OR将完全跳过包含语句的案例,或者仅匹配列表中的第一项.我究竟做错了什么?
CASE ranking
WHEN 1 THEN 'alpha'
WHEN 2 THEN 'beta'
WHEN 10 THEN 'charlie'
ELSE 'zelta'
END CASE;
Run Code Online (Sandbox Code Playgroud)
您可以使用 WHEN 所具有的表达式之一,但不能混合使用这两个表达式。
1) WHEN when_expression 是使用简单 CASE 格式时与 input_expression 进行比较的简单表达式。when_expression 是任何有效的表达式。input_expression 和每个when_expression 的数据类型必须相同或者必须是隐式转换。
2) WHEN Boolean_expression 是使用搜索的CASE 格式时计算的布尔表达式。Boolean_expression 是任何有效的布尔表达式。
你可以编程:
1)
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
Run Code Online (Sandbox Code Playgroud)
2)
CASE
WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
WHEN ListPrice < 50 THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
ELSE 'Over $1000'
END
Run Code Online (Sandbox Code Playgroud)
但无论如何,您都可以预期变量排名将在布尔表达式中进行比较。
http://msdn.microsoft.com/en-us/library/ms181765.aspx
| 归档时间: |
|
| 查看次数: |
4902 次 |
| 最近记录: |