You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

校验FISCAL_START日期范围的SQL查询报缺少关键字错误如何解决

问题原因

你提交的SQL语句混用了两种CASE表达式的语法规则,导致触发缺少关键字报错:

  • 简单CASE表达式语法为 CASE 匹配字段 WHEN 匹配值 THEN 返回值 ... ELSE 默认值 END,要求WHEN后直接跟匹配值,不需要写完整判断条件
  • 搜索CASE表达式语法为 CASE WHEN 判断条件 THEN 返回值 ... ELSE 默认值 END,要求CASE后不跟任何字段,WHEN后写完整判断逻辑

你当前的写法在CASE后指定了FISCAL_START字段,WHEN后又写了完整的FISCAL_START = 'xxx'判断条件,不符合任意一种合法语法,因此数据库抛出语法错误。

修复方案

可任选以下任意一种符合语法的写法修改:

方案1:使用简单CASE表达式(适合等值匹配场景,写法更简洁)

SELECT FISCAL_START,DESCRIPTION,
(
CASE FISCAL_START
WHEN '2014-03-31' THEN DESCRIPTION
WHEN '2014-09-29' THEN DESCRIPTION
ELSE 'Test Failed'
END
) AS CHECK_RESULT
FROM GL_PERIOD

方案2:使用搜索CASE表达式(方便后续扩展非等值判断逻辑)

SELECT FISCAL_START,DESCRIPTION,
(
CASE
WHEN FISCAL_START = '2014-03-31' THEN DESCRIPTION
WHEN FISCAL_START = '2014-09-29' THEN DESCRIPTION
ELSE 'Test Failed'
END
) AS CHECK_RESULT
FROM GL_PERIOD

补充说明

如果FISCAL_START字段是DATE类型而非字符串类型,部分数据库会因为字符串和日期类型不匹配报错,可根据你使用的数据库类型对日期值做显式转换:

  • Oracle写法:TO_DATE('2014-03-31','YYYY-MM-DD')
  • MySQL写法:STR_TO_DATE('2014-03-31','%Y-%m-%d')
  • SQL Server写法:CAST('2014-03-31' AS DATE)

内容的提问来源于stack exchange,提问作者Moses76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:09:03