【求助】原生SQL查询中文字段排序问题
本帖最后由 ccraise 于 2023-7-12 14:54 编辑数据库用的MariaDB,等同于MySQL
在对中文字段排序时,由于数据库本身问题,排序是有问题的,
但在使用 convert对中文字段转码时会报错:
net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "(" "(" at line 4, column 23. Was expecting one of: "&" "::" "<<" ">>" "ASC" "DESC" "EMIT" "NULLS" "[" "^" "|" <EOF> <ST_SEMICOLON>
SQL语句如下:
SELECT * FROM QRY_DYN_MYSHUANGZHOUSHUJU
where xdate_end = (select max(s.xdate_end) from QRY_DYN_MYSHUANGZHOUDATEREC s)
order by
xdate_end desc,convert(xywfl using gbk),xywnr,xywmsh,xbumen
那么是不是说现在还不支持MySQL的convert语句?
有什么办法能实现对中文字段的正确排序?
你o2server是哪个版本,升级到最新版试试,然后查询语句的总数语句设置改为忽略,理论上你的sql如果在数据库客户端能正确执行那在查询语句原生sql也能执行,还有一个问题可能是数据库驱动是否完全适配的问题 启蒙星 发表于 2023-7-13 10:35
你o2server是哪个版本,升级到最新版试试,然后查询语句的总数语句设置改为忽略,理论上你的sql如果在数据 ...
这不是驱动问题,根据报错,这是Mybatis Plus的问题。百度到的结果是缺少Mybatis Plus的一些依赖,缺少sql解析工具的jar包。请教怎样才能解决呢? 平台没有用到Mybatis或者Mybatis Plus,前面提的问题有尝试过没:o2server是哪个版本,升级到最新版试试,然后查询语句的总数语句设置改为忽略 启蒙星 发表于 2023-7-17 09:25
平台没有用到Mybatis或者Mybatis Plus,前面提的问题有尝试过没:o2server是哪个版本,升级到最新版试试, ...
o2oa已是最新8.0.4版本
如果没用Mybatis,那就是用到了jsqlparser,也就是报错信息里面的提阿道这个包。经查,jsqlparser只能支持通用SQL,而convert 是MYSQL特有的函数,估计jsqlparser不支持,应该是这个原因。
那么请教:如何在使用MySQL数据库的情况下,在O2OA里面实现对中文的正确排序? 平台解析sql确实是用到jsqlparser,对一些不同数据库特别的关键字我们后续尝试去做兼容处理,临时解决方案您可以修改该中文字段的字符集和排序方式为gbk和gbk_chinese_ci
页:
[1]