开发者社区> 问答> 正文

order by 后面不能用函数么

select * from table where level between 10-5 and 10+5 order by -ABS(10 - level) desc limit 0,100

在druid里面会提示 com.alibaba.druid.sql.parser.ParserException: not support token:QUES at com.alibaba.druid.sql.parser.SQLExprParser.methodRest(SQLExprParser.java:691) at com.alibaba.druid.sql.parser.SQLExprParser.primaryRest(SQLExprParser.java:651) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser.primaryRest(MySqlExprParser.java:480) at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:548) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser.primary(MySqlExprParser.java:166) at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:118) at com.alibaba.druid.sql.parser.SQLExprParser.parseSelectOrderByItem(SQLExprParser.java:979) at com.alibaba.druid.sql.parser.SQLExprParser.parseOrderBy(SQLExprParser.java:963) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.query(MySqlSelectParser.java:138) at com.alibaba.druid.sql.parser.SQLSelectParser.select(SQLSelectParser.java:60) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseSelect(MySqlStatementParser.java:195) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:145) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:121) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:116) at com.alibaba.druid.sql.SQLUtils.toStatementList(SQLUtils.java:174) at com.alibaba.druid.sql.SQLUtils.format(SQLUtils.java:187)

1.0.12版本

原提问者GitHub用户845629143

展开
收起
山海行 2023-07-05 21:25:42 197 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    ORDER BY子句通常可以使用函数,但是需要注意函数的使用位置、性能影响和数据类型的兼容性。

    2023-07-30 09:36:39
    赞同 展开评论 打赏
  • 改成1.0.27就没问题了

    原回答者GitHub用户845629143

    2023-07-06 11:58:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载