中文汉字排序的问题

咨询客服,目前采用ASCII进行排序,这个毫无意义,有没有办法按拼音排序,工程师多想想办法。

FineReport xiongwj 发布于 2020-3-19 14:42
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
axingLv6专家互助
发布于2020-3-19 15:01

常用函数集合插件-https://help.finereport.com/doc-view-1493.html

安装这个插件后使用下面这个公式将字符串转成拼音再排序

image.png

  • xiongwj xiongwj(提问者) 使用https://help.finereport.com/doc-view-3249.html能解决多列排序问题,但中文排序就出现问题了
    2020-03-19 15:21 
  • axing axing 回复 xiongwj(提问者) 判断一下就好,如果那列数据是中文,就先用上面那个公式转成拼音
    2020-03-19 15:25 
  • xiongwj xiongwj(提问者) 请教INARRAY(EVAL($asc), SORTARRAY(EVAL($asc + \"[!0]\"))) * $a和StringPinyin 如何结合使用,怎么也不行,第一感觉INARRAY(StringPinyin(EVAL($asc)), SORTARRAY(StringPinyin(EVAL($asc + \"[!0]\")))) * $a,有问题
    2020-03-19 16:45 
  • xiongwj xiongwj(提问者) 这样写INARRAY(StringShortPinyin(EVAL($asc)), SORTARRAY(MAPARRAY (EVAL($asc + \"[!0]\"),StringShortPinyin(item)))) * $a好像可以
    2020-03-19 17:14 
  • axing axing 回复 xiongwj(提问者) 嗯,再判断一下asc是不是中文列,是的话用这个,不是的话用原来的
    2020-03-19 17:29 
最佳回答
0
zsh331Lv8专家互助
发布于2020-3-19 14:45(编辑于 2020-3-19 14:46)
  • xiongwj xiongwj(提问者) 用SQL排序没有问题,如想实现多列动态排序,点题头重新排序,使用SQL比较麻烦
    2020-03-19 14:51 
最佳回答
0
影丶Lv5高级互助
发布于2020-3-19 14:53

在SQL上处理就可以了

--Oracle:
select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');
--SQL Server:
select * from table order by name collate Chinese_PRC_CS_AS_KS_WS;
--MySQL:
SELECT * FROM TEST ORDER BY CONVERT(value USING GBK) ASC/DESC;



  • xiongwj xiongwj(提问者) 谢谢,假设报表包含姓名,语文分数,数学分数,英语分数四列,希望实现鼠标点击姓名升序,再点击姓名倒序,其它语文、数学和英语也类似,如何实现,每次都重写SQL?
    2020-03-19 15:19 
  • ejzhang ejzhang 回复 xiongwj(提问者) 可以对于包含中文的字段加上“binary”属性,使之作为二进制比较,例如将“name char(10)”改成“name char(10) binary”。
    2020-03-20 16:33 
  • 6关注人数
  • 1461浏览人数
  • 最后回答于:2020-3-19 15:01
    请选择关闭问题的原因
    确定 取消
    返回顶部