0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# 解决Caused by: net.sf.jsqlparser.parser.ParseException: Encountered " "(" "( ""

解决Caused by: net.sf.jsqlparser.parser.ParseException: Encountered " "(" "( "" at line 10, column 42.

运行mybatis查询sql时报错异常:

Caused by: net.sf.jsqlparser.parser.ParseException: Encountered " "(" "( "" at line 10, column 42.
Was expecting one of:
"AS" ...
"DO" ...
"ANY" ...
"KEY" ...
"PERCENT" ...
"END" ...
"INTO" ...
"FROM" ...
"OPEN" ...
"TABLE" ...
"WHERE" ...
"FOR" ...
"XML" ...
"UNION" ...
"GROUP" ...
"ORDER" ...
"VALUE" ...
"HAVING" ...
"INSERT" ...
"VALUES" ...
"REPLACE" ...
"TRUNCATE" ...
"INTERSECT" ...
"CAST" ...
"EXCEPT" ...
"MINUS" ...
"OVER" ...
"PARTITION" ...
"EXTRACT" ...
"MATERIALIZED" ...
"START" ...
"CONNECT" ...
"PRIOR" ...
"SIBLINGS" ...
"COLUMN" ...
"NULLS" ...
"FIRST" ...
"LAST" ...
"ROWS" ...
"RANGE" ...
"FOLLOWING" ...
"ROW" ...
"COMMIT" ...
"SEPARATOR" ...
"CASCADE" ...
"NO" ...
"ACTION" ...
<K_DATETIMELITERAL> ...
"PRECISION" ...
<S_IDENTIFIER> ...
<S_QUOTED_IDENTIFIER> ...
"," ...
")" ...
"|" ...
"&" ...
"^" ...
"::" ...
"ORDER" ...
"ORDER" ...

at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:16395)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:16248)
at net.sf.jsqlparser.parser.CCJSqlParser.PrimaryExpression(CCJSqlParser.java:6333)
at net.sf.jsqlparser.parser.CCJSqlParser.BitwiseXor(CCJSqlParser.java:5926)
at net.sf.jsqlparser.parser.CCJSqlParser.MultiplicativeExpression(CCJSqlParser.java:5883)
at net.sf.jsqlparser.parser.CCJSqlParser.AdditiveExpression(CCJSqlParser.java:5845)
at net.sf.jsqlparser.parser.CCJSqlParser.ConcatExpression(CCJSqlParser.java:5778)
at net.sf.jsqlparser.parser.CCJSqlParser.BitwiseAndOr(CCJSqlParser.java:5802)
at net.sf.jsqlparser.parser.CCJSqlParser.SimpleExpression(CCJSqlParser.java:5770)
at net.sf.jsqlparser.parser.CCJSqlParser.CaseWhenExpression(CCJSqlParser.java:7275)
at net.sf.jsqlparser.parser.CCJSqlParser.PrimaryExpression(CCJSqlParser.java:5964)
at net.sf.jsqlparser.parser.CCJSqlParser.BitwiseXor(CCJSqlParser.java:5926)

查询sql:

SELECT DISTINCT CONCAT(IFNULL(c.ZH_NAME,''),IF(LENGTH(c.US_NAME) > 0 AND LENGTH(c.ZH_NAME) >
0,'/',''),IFNULL(c.US_NAME,''))

FROM table c

报错原因:是因为Mybatis 的分页插件SQL 语句中对 IF函数不支持

解决方法:

将 IF 替换成 case when 使用

SELECT DISTINCT CONCAT(IFNULL(c.ZH_NAME,''),
case when LENGTH(c.US_NAME) > 0 AND LENGTH(c.ZH_NAME) > 0
then '/'
else '' end
,IFNULL(c.US_NAME,''))
FROM table c
举报

相关推荐

0 条评论