如何在MySQL CASE表达式中使用“OR”条件?

前端之家收集整理的这篇文章主要介绍了如何在MySQL CASE表达式中使用“OR”条件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个包含CASE表达式语句的过程,如下所示:

  1. BEGIN
  2. ....
  3. WHILE counter < total DO
  4. ....
  5. CASE ranking
  6. WHEN 1 OR 51 OR 100 OR 167 THEN SET
  7. project_name = 'alpha';
  8. WHEN 2 THEN SET
  9. project_name = 'beta';
  10. WHEN 10 OR 31 OR 40 OR 61 THEN SET
  11. project_name = 'charlie';
  12. ....
  13. ELSE SET
  14. project_name = 'zelta';
  15. END CASE;
  16. INSERT INTO project (id,name) VALUES (LAST_INSERT_ID(),project_name);
  17. SET counter = counter + 1;
  18. END WHILE;
  19. END
  20. $$
  21. DELIMITER ;

当我调用上述过程时,OR语句的案例要么被完全跳过,要么只有列表中的第一项被匹配.我究竟做错了什么?

最佳答案
  1. CASE ranking
  2. WHEN 1 THEN 'alpha'
  3. WHEN 2 THEN 'beta'
  4. WHEN 10 THEN 'charlie'
  5. ELSE 'zelta'
  6. END CASE;

您可以使用WHEN具有的表达式之一,但不能将它们混合使用.

1)何时when_expression
   是一个简单的表达式,当使用简单的CASE格式时,input_expression与之比较. when_expression是任何有效的表达式. input_expression和每个when_expression的数据类型必须相同或必须是隐式转换.

2)WHEN Boolean_expression
使用搜索的CASE格式时是否计算布尔表达式. Boolean_expression是任何有效的布尔表达式.

你可以编程:

1)

  1. CASE ProductLine
  2. WHEN 'R' THEN 'Road'
  3. WHEN 'M' THEN 'Mountain'
  4. WHEN 'T' THEN 'Touring'
  5. WHEN 'S' THEN 'Other sale items'
  6. ELSE 'Not for sale'

2)

  1. CASE
  2. WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
  3. WHEN ListPrice < 50 THEN 'Under $50'
  4. WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
  5. WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
  6. ELSE 'Over $1000'
  7. END

但无论如何,您可以预期变量排名将在布尔表达式中进行比较.

http://msdn.microsoft.com/en-us/library/ms181765.aspx

猜你在找的MySQL相关文章