MySQL简单CASE语句触发解析异常,移除第二个WHEN可正常运行
问题排查:CASE语句解析异常原因
你的CASE语句触发解析异常的原因是第二个WHEN分支里的coalesce函数存在括号不匹配的语法错误:
错误代码片段:
coalesce((col3 + col4)/(col5-col6)),0)
这里(col3 + col4)/(col5-col6)的右括号闭合后,多写了一个额外的),导致coalesce函数的参数结构被破坏——coalesce需要至少两个参数,而错误写法里第一个参数还没写完就提前闭合了括号,SQL解析器无法识别正确的函数调用格式。
修正后的第二个WHEN分支代码:
coalesce((col3 + col4)/(col5-col6), 0)
完整修正后的CASE语句:
case when (table.col1 = 'A' and table.col2 = 'X') then coalesce(((col3 + col4)/(col5-col6))/floor(datediff(date('2022-11-11'), date('2022-08-27'))/7),0) when (table.col1 = 'B' and table.col2 = 'X') then coalesce((col3 + col4)/(col5-col6),0) end as final
移除第二个WHEN语句后代码能正常运行,就是因为这个语法错误被排除了。
内容的提问来源于stack exchange,提问作者user18398254
相关产品推荐
相关产品推荐

