druid odps: case前有负号 解析异常

9wbgstp7  于 2021-11-27  发布在  Java
关注(0)|答案(2)|浏览(324)

version: 1.1.16

select -
    case '1'
    when '1' then '2'
    end
from test1;

异常信息如下:

com.alibaba.druid.sql.parser.ParserException: TODO : pos 18, line 1, column 9, token CASE
	at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:729)
	at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:154)
	at com.alibaba.druid.sql.dialect.odps.parser.OdpsExprParser.parseSelectItem(OdpsExprParser.java:99)
	at com.alibaba.druid.sql.parser.SQLSelectParser.parseSelectList(SQLSelectParser.java:675)
	at com.alibaba.druid.sql.dialect.odps.parser.OdpsSelectParser.query(OdpsSelectParser.java:83)
	at com.alibaba.druid.sql.parser.SQLSelectParser.select(SQLSelectParser.java:88)
	at com.alibaba.druid.sql.dialect.odps.parser.OdpsStatementParser.parseSelect(OdpsStatementParser.java:69)
	at com.alibaba.druid.sql.dialect.odps.parser.OdpsStatementParser.parseSelect(OdpsStatementParser.java:54)
	at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:248)
	at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:171)
lp0sw83n

lp0sw83n1#

select -
case '1'
when '1' then '2'
end
from test1;

select 后面为啥有一横

igetnqfo

igetnqfo2#

负号, 数仓同学写的sql, 专门验证了一下居然还能用. mysql也支持这样写.
写成0 -也比这好吧

相关问题