查看: 8572|回复: 5

【求助】原生SQL查询中文字段排序问题

升级   5.05%

19

主题

23

回帖

505

积分

注册会员

Rank: 2

积分
505
发表于 2023-7-12 14:53:39 | 显示全部楼层 |阅读模式
本帖最后由 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语句?
有什么办法能实现对中文字段的正确排序?
[backcolor=rgba(0, 0, 0, 0.85)]

[backcolor=rgba(0, 0, 0, 0.85)]

[backcolor=rgba(0, 0, 0, 0.85)]

[backcolor=rgba(0, 0, 0, 0.85)]

[backcolor=rgba(0, 0, 0, 0.85)]

回复

使用道具 举报

升级   100%

0

主题

662

回帖

2

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2
发表于 2023-7-13 10:35:47 | 显示全部楼层
你o2server是哪个版本,升级到最新版试试,然后查询语句的总数语句设置改为忽略,理论上你的sql如果在数据库客户端能正确执行那在查询语句原生sql也能执行,还有一个问题可能是数据库驱动是否完全适配的问题
回复

使用道具 举报

升级   5.05%

19

主题

23

回帖

505

积分

注册会员

Rank: 2

积分
505
发表于 2023-7-15 15:04:54 | 显示全部楼层
启蒙星 发表于 2023-7-13 10:35
你o2server是哪个版本,升级到最新版试试,然后查询语句的总数语句设置改为忽略,理论上你的sql如果在数据 ...

这不是驱动问题,根据报错,这是Mybatis Plus的问题。百度到的结果是缺少Mybatis Plus的一些依赖,缺少sql解析工具的jar包。请教怎样才能解决呢?
回复

使用道具 举报

升级   100%

0

主题

662

回帖

2

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2
发表于 2023-7-17 09:25:35 | 显示全部楼层
平台没有用到Mybatis或者Mybatis Plus,前面提的问题有尝试过没:o2server是哪个版本,升级到最新版试试,然后查询语句的总数语句设置改为忽略
回复

使用道具 举报

升级   5.05%

19

主题

23

回帖

505

积分

注册会员

Rank: 2

积分
505
发表于 2023-7-17 11:39:56 | 显示全部楼层
启蒙星 发表于 2023-7-17 09:25
平台没有用到Mybatis或者Mybatis Plus,前面提的问题有尝试过没:o2server是哪个版本,升级到最新版试试, ...

o2oa已是最新8.0.4版本
如果没用Mybatis,那就是用到了jsqlparser,也就是报错信息里面的提阿道这个包。经查,jsqlparser只能支持通用SQL,而convert 是MYSQL特有的函数,估计jsqlparser不支持,应该是这个原因。
那么请教:如何在使用MySQL数据库的情况下,在O2OA里面实现对中文的正确排序?
回复

使用道具 举报

升级   100%

0

主题

662

回帖

2

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2
发表于 2023-7-18 18:00:54 | 显示全部楼层
平台解析sql确实是用到jsqlparser,对一些不同数据库特别的关键字我们后续尝试去做兼容处理,临时解决方案您可以修改该中文字段的字符集和排序方式为gbk和gbk_chinese_ci
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread