MySQL中的Case表达式和Case语句有什么区别?什么时候可以使用它们?与另一种相比,使用它们有什么好处?
Case Statement语法:
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE
案例表达语法:
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
这些看起来几乎相同,但是对Case Statements的最初描述是: The CASE statement for stored programs implements a complex conditional construct.
The CASE statement for stored programs implements a complex conditional construct.
那么,在存储程序中使用一个而不在普通查询中使用它的显着区别是吗?我在正在使用的查询中尝试了此操作,但失败了-sqlfiddle。如果是这种情况,为什么不只在存储程序中使用Case Expression?
还有其他语法上的差异,因为它们似乎是相同的?
该CASE表达式根据某个条件求值,即用于对一组结果之一求值。 例:
CASE
SELECT CASE WHEN type = 1 THEN 'foo' WHEN type = 2 THEN 'bar' ELSE 'baz' END AS name_for_numeric_type FROM sometable`
该CASE语句根据某种条件执行一组语句中的一个。 例:
CASE WHEN action = 'update' THEN UPDATE sometable SET column = value WHERE condition; WHEN action = 'create' THEN INSERT INTO sometable (column) VALUES (value); END CASE
您将看到它们的相似之处,但是该语句 不会 求值,并且可以单独使用,而表达式需要成为表达式的一部分,例如查询或赋值。您不能在查询中使用该语句,因为查询不能包含语句,因此仅需要对某些内容求值的表达式(从SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE某种意义上说,查询本身就是一条语句),例如,没有任何意义。
SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE