CASE WHEN语句是顺序执行的,即MySQL会按照WHEN子句的顺序逐个检查条件,一旦找到满足条件的子句,就会返回对应的result,并停止检查后续的子句。如果没有任何条件满足,则返回ELSE子句指定的结果(如果有的话),或者返回NULL(如果没有ELSE子句)。 3. 简单的CASE WHEN示例 以下是一个简单的示例,用于展示CASE WHEN语句的执行...
CREATEPROCEDUREtest_case() BEGIN # 演示1:case...when...then... /* declare var int default 2; case var when 1 then select 'var = 1'; when 2 then select 'var = 2'; when 3 then select 'var = 3'; else select 'other value'; end case; */ # 演示2:casewhen...then... DECLA...
SELECT work_order_id, state_change_time, start_date, actual_end_date, case when (line_id is not null ) and state = 3 then 1 when (line_id is not null ) and state = 4 then 2 when (line_id is not null ) and state = 2 then 3 when (line_id is null ) and state = 3 the...
WHEN Boolean_expression:计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。 结果类型:从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。 结果值: 简单CASE 函数 执行顺序: 计算input_expression,然后按指定顺序对每个 WHEN...
1 CASE WHEN [expr] THEN [result1]… ELSE [default] END 2 CASE [col_name] WHEN [value1/expr1] THEN [result1]… ELSE [default] END 注意: 第一种语法最常用,可比较等于、范围的条件。遇到第一个满足条件的即返回,不再往下比较,如果没有满足的条件则返回else里的结果,如果没有else则返回NULL。
顺序弄反了,是返回第一个符合条件的结果 selectname,salary,casewhensalary >=2000then'T1'whensalary >=3000then'T2'whensalary >=4000then'T3'whensalary >=5000then'T4'else'T5'endas salary_levelfrom staff ;+---+---+---+| name |salary| s...
图中的序号代表执行顺序,意味着when的条件是互斥的。找到满足的条件则退出case 语句,但通常我们使用case语句是做汇总分析比如如下: 使用0,1小技巧,先给表增加两列,再分组统计 SELECT 课程号, case when 成绩>=60 then 1 else 0 end as 及格人数,
statement_list]end case case_value:参数表示条件判断的变量;when_value:参数表示变量的取值;statement_list:参数表示不同when_value值的执行语句。case语句的另一种形式。语法2:case when search_condition then statement_list [when search_condition then statement_list]…[else statement_list]end case。
大致思路: 拼一个字符:规定时间内:字符1开始,后面连接a 时间之外:字符2开始,后面连接b 具体语法你修改:order by ( case when time >=1338048000 and time <= 1338307200 then '1'+a else '2'+b end )