陳sir 发布于84月前 3答/1632阅
SqlParse BUG
String exp=" select id as id, concat(id, '(', nickname, '|', ifnull(name, ' '), ')') as cn from op_user";
EovaExp se = new EovaExp(exp);
出来的结果是:
DS:main
SS:select id, concat(id, '(', nickname, '|', ifnull(name, ' '), ')')
SELECT:select id, concat(id, '(', nickname, '|', ifnull(name, ' '), ')')
FROM: from op_user
WHERE:
ORDER:null
PK:id
CN:
CN是空的
需要修改SqlParse.getExprName
/**
* 获取字段名
*
* @param expr
* @return
*/
public static String getExprName(SQLExpr expr) {
if (expr instanceof SQLPropertyExpr) {
// 有别名
return ((SQLPropertyExpr) expr).getName();
} else if (expr instanceof SQLIdentifierExpr) {
// 无别名
return ((SQLIdentifierExpr) expr).getName();
}else if(expr instanceof SQLMethodInvokeExpr){
//函数表达式
return ((SQLMethodInvokeExpr) expr).toString();
}
return expr.toString();
}
这样CN就是 concat(id, '(', nickname, '|', ifnull(name, ' '), ')')