Oracle的nlssort函数
nlssort函数的作用是对字段排序字符串类型的1.按拼音排序select * from MEMBER t order by NLSSORT(t.b,NLS_SORT SCHINESE_PINYIN_M)2.按笔画排序select * from MEMBER t order by NLSSORT(t.b,NLS_SORT SCHINESE_STROKE_M)3.按部首排序select * from MEMBER t order by NLSSORT(t.b,NLS_SORT SCHINESE_RADICAL_M)java 汉字按照拼音排序数据库中按照拼音排序很简单SELECT DISTINCT province_name, province_code FROM metadata_township ORDER BY convert(province_name USING gbk) asc一般的排序都是能正确的但是有的多音字啥的会有点差别例如重庆按理说是重是“chong”但是排序的时候会按照“zhong”,就会排在靠后的。Java中按照拼音排序我的list里面是对象对象里面含有需要按照拼音排序的字段name我用的lambda表达式来简化代码。/***(o1, o2) - Collator.getInstance(Locale.CHINA).compare(o1.getName(), o2.getName()) 排序规则根据汉字的拼音来排序升序* list 是需要排序的集合*/Collections.sort(list,(o1, o2) - Collator.getInstance(Locale.CHINA).compare(o1.getName(), o2.getName()));根据这个得到的排序大部分都是正确的跟前面sql里面排序的结果差不多多音字生僻字会不准确。默认的Collection.sort()是按照ASCII码排序, 不过, 有第二个重载方法, 第二个参数可以传入Comparator对象java.text.Collator可以用于本地语言排序, 自身已经实现Comparator接口.Collator.getInstance(Locale.CHINA)获取到我们中文的Collator实例/** * 按照拼音首字母排序 */ Test public void test() { ListString data new ArrayList(Arrays.asList(上海, 天津, 北京, 深圳, 广州, 成都, 西安, 武汉, 郑州, 邯郸, a, z, A, Z)); Collator collator Collator.getInstance(Locale.CHINA); Collections.sort(data, collator); for (String str : data) { System.out.print(str ); } }java实现按拼音排序ListWaPayFileVO list (ListWaPayFileVO) dao.execQueryBeanList(pagesql, params.toArray(), new BeanListProcessor(WaPayFileVO.class)); if(asc.equals(page.getOrder()) pk_psnjob__pk_psndoc__name.equals(page.getSort())){ Collections.sort(list, new ComparatorWaPayFileVO() { Override public int compare(WaPayFileVO o1, WaPayFileVO o2) { return Collator.getInstance(Locale.CHINESE).compare(o1.getPk_psnjob__pk_psndoc__name(),o2.getPk_psnjob__pk_psndoc__name()); } }); }else if(desc.equals(page.getOrder()) pk_psnjob__pk_psndoc__name.equals(page.getSort())){ Collections.sort(list, new ComparatorWaPayFileVO() { Override public int compare(WaPayFileVO o1, WaPayFileVO o2) { return -Collator.getInstance(Locale.CHINESE).compare(o1.getPk_psnjob__pk_psndoc__name(),o2.getPk_psnjob__pk_psndoc__name()); } }); }jdk自带的Collator包涵的汉字太少了对一些生僻的姓氏不能进行排序。推荐使用import com.ibm.icu.text.Collator;是ibm开发的针对编码的工具包非常好用。附pom文件dependency groupIdcom.ibm.icu/groupId artifactIdicu4j/artifactId version57.1/version /dependency业务场景一个list集合里面add了若干个实体类针对该实体类排序的属性为String。使用技术自定义list排序JDK自带重写Comparator接口的compare方法汉字转拼音技术使用的pinyin4j。pinyin4j官网地址http://pinyin4j.sourceforge.net/不想去官网下载的我这里也有地址为//tempRateList 为需要进行自定义排序的集合SpRate为该集合的实体类riskName为排序的属性。直接上方案1、导入pinyin4j-2.5.0.jar2、对自定义排序的类使用以下方法进行自定义排序Collections.sort(tempRateList,new ComparatorSpRate() {Overridepublic int compare(SpRate s1, SpRate s2) {String o1 s1.getRiskName();String o2 s2.getRiskName();for (int i 0; i o1.length() i o2.length(); i) {int codePoint1 o1.charAt(i);int codePoint2 o2.charAt(i);if (Character.isSupplementaryCodePoint(codePoint1)|| Character.isSupplementaryCodePoint(codePoint2)) {i;}if (codePoint1 ! codePoint2) {if (Character.isSupplementaryCodePoint(codePoint1)|| Character.isSupplementaryCodePoint(codePoint2)) {return codePoint1 - codePoint2;}String pinyin1 PinyinHelper.toHanyuPinyinStringArray((char) codePoint1) null? null : PinyinHelper.toHanyuPinyinStringArray((char) codePoint1)[0];String pinyin2 PinyinHelper.toHanyuPinyinStringArray((char) codePoint2) null? null : PinyinHelper.toHanyuPinyinStringArray((char) codePoint2)[0];if (pinyin1 ! null pinyin2 ! null) { // 两个字符都是汉字if (!pinyin1.equals(pinyin2)) {return pinyin1.compareTo(pinyin2);}} else {return codePoint1 - codePoint2;}}}return o1.length() - o2.length();}});3、方法结束后 tempRateList 对象就完成了自定义排序

相关新闻

UE5、Unity、ThreeJS怎么选?数字孪生引擎选型干货

UE5、Unity、ThreeJS怎么选?数字孪生引擎选型干货

当你决定要上一个数字孪生项目时,技术选型往往是第一个“拦路虎”。打开搜索引擎,Unreal Engine(UE5)、Unity、Three.js这几个名字会反复出现,每个看起来都能做3D,但彼此的定位和适用场景又截然不同。选错了…

2026/8/26 16:23:18 阅读更多 →
达梦数据库ORDER BY NLSSORT(name,‘NLS_SORT = SCHINESE_PINYIN_M’)汉字排序

达梦数据库ORDER BY NLSSORT(name,‘NLS_SORT = SCHINESE_PINYIN_M’)汉字排序

可以使用 NLSSORT 函数实现此功能,NLSSORT 支持以拼音、笔画、部首排序,示例如下:拼音:SELECT * FROM PEOPLE ORDER BY NLSSORT(name,‘NLS_SORT SCHINESE_PINYIN_M’); 笔划:SELECT * FROM PEOPLE ORDER BY NLSSORT(…

2026/8/26 16:23:18 阅读更多 →
CANNBot-Insight完全指南:Next.js 16+Prisma打造的AI编码代理会话可观测性工具

CANNBot-Insight完全指南:Next.js 16+Prisma打造的AI编码代理会话可观测性工具

CANNBot-Insight完全指南:Next.js 16Prisma打造的AI编码代理会话可观测性工具 【免费下载链接】cannbay2 项目地址: https://ai.gitcode.com/guanxinghua/cannbay2 本文是 CANNBot-Insight 的完整使用指南。CANNBot-Insight 是一款基于 Next.js 16 与 Prisma…

2026/8/26 16:23:18 阅读更多 →

最新新闻

零基础如何学会分析店铺电商数据:从指标拆解到归因验证

零基础如何学会分析店铺电商数据:从指标拆解到归因验证

零基础学习店铺电商数据分析,建议先掌握“问题—指标—拆解—验证—行动”五步法,而不是一开始就学复杂工具。先用表格分析流量、转化、客单、退款和利润,再根据数据规模选择传统BI、AI问数或一体化AI BI;所有归因结论都应通过分组…

2026/8/26 16:50:47 阅读更多 →
AI Agent 面试题 342:如何为Agent设计统一的工具调用接口抽象层?

AI Agent 面试题 342:如何为Agent设计统一的工具调用接口抽象层?

🔥 AI Agent 面试题 342:如何为Agent设计统一的工具调用接口抽象层?摘要:本文深入解析了「如何为Agent设计统一的工具调用接口抽象层?」这一 AI Agent 领域的核心面试题。文章从 工具注册与发现 的基本概念出发&#x…

2026/8/26 16:50:47 阅读更多 →
DMFLDR快速装载

DMFLDR快速装载

一、工具概述 1.1 核心功能 DMFLDR(DM Fast Loader)是DM数据库提供的命令行快速数据装载工具,位于DM安装目录的 bin 子目录下,核心功能为数据导入和数据导出,数据导入为将文本文件(如CSV、TXT等格式&#x…

2026/8/26 16:50:47 阅读更多 →
AI Agent 面试题 344:如何处理工具调用中的敏感数据脱敏问题?

AI Agent 面试题 344:如何处理工具调用中的敏感数据脱敏问题?

🔥 AI Agent 面试题 344:如何处理工具调用中的敏感数据脱敏问题?摘要:本文深入解析了「如何处理工具调用中的敏感数据脱敏问题?」这一 AI Agent 领域的核心面试题。文章从 API 编排与链式调用 的基本概念出发&#xff…

2026/8/26 16:50:47 阅读更多 →
AI Agent 面试题 346:如何实现Agent工具调用的可观测性?

AI Agent 面试题 346:如何实现Agent工具调用的可观测性?

🔥 AI Agent 面试题 346:如何实现Agent工具调用的可观测性?摘要:本文深入解析了「如何实现Agent工具调用的可观测性?」这一 AI Agent 领域的核心面试题。文章从 API 编排与链式调用 的基本概念出发,系统性地…

2026/8/26 16:50:47 阅读更多 →
面部表情识别在心理健康辅助评估中的应用总结

面部表情识别在心理健康辅助评估中的应用总结

面部表情识别是计算机视觉领域一个极具代表性的应用课题,它要求算法能够从静态或动态的面部图像中准确解读人类情绪状态。这类任务不仅考验模型对细微纹理与几何变化的捕捉能力,也直接关联到情感计算、人机交互、心理健康辅助评估等一系列前沿产业应用场景。参与此类竞赛,实…

2026/8/26 16:49:46 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →