案例表达与案例陈述

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.

那么,在存储程序中使用一个而不在普通查询中使用它的显着区别是吗?我在正在使用的查询中尝试了此操作,但失败了-sqlfiddle。如果是这种情况,为什么不只在存储程序中使用Case

Expression?

还有其他语法上的差异,因为它们似乎是相同的?

回答:

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某种意义上说,查询本身就是一条语句),例如,没有任何意义。

以上是 案例表达与案例陈述 的全部内容, 来源链接: utcz.com/qa/408441.html

回到顶部