【问题标题】:CASE statement in SQL throwing a parsing issueSQL 中的 CASE 语句引发解析问题
【发布时间】:2021-10-21 22:14:49
【问题描述】:

当我运行下面的 SQL 时,它说解析查询时出错。我尽力找出错误但没有运气。任何帮助将不胜感激。

SELECT *, $field, 
    CASE
    WHEN SEVERITY_LABEL = 'LOW' THEN  '1'
    WHEN SEVERITY_LABEL = 'MEDIUM' THEN  '2'
    WHEN SEVERITY_LABEL = 'HIGH' THEN '3'
    ELSE 'Not Sev' END AS 'SEVERITY'
FROM table_name
WHERE ("class"=~/^$class$/) AND $Filter

错误:

InfluxDB 错误:解析查询时出错:发现时间,预期来自第 3 行,字符 5

谢谢

【问题讨论】:

  • MySQL SQL Server InfluxDB - 请更正你的标签。
  • 仅供参考 case 是一个表达式而不是一个语句
  • 从错误中很清楚这是 InfluxDB。我已经更新了标签。
  • 快速浏览一下文档,我可能是错的,但似乎 InfluxDB 不支持大小写。
  • ELSE 'Not Sev' END AS "SEVERITY"

标签: sql influxdb influxdb-python


【解决方案1】:

"SEVERITY"标识符需要双引号。 (单引号用于(字符串)文字


SELECT *, $field, 
    CASE
    WHEN SEVERITY_LABEL = 'LOW' THEN  '1'
    WHEN SEVERITY_LABEL = 'MEDIUM' THEN  '2'
    WHEN SEVERITY_LABEL = 'HIGH' THEN '3'
    ELSE 'Not Sev' END AS "SEVERITY"
FROM table_name
WHERE ("class"=~/^$class$/) AND $Filter
    ;

【讨论】:

  • 感谢您的回复,但现在它显示“找到 CASE,预期;在第 2 行,字符 1”
  • 只是为了测试:删除WHERE ... 子句。 (看起来解析器在被错误令牌阻塞时正在回溯)您也可以尝试删除 $field,
猜你喜欢
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2012-01-01
  • 2021-12-20
  • 2019-11-26
  • 1970-01-01
相关资源
最近更新 更多