恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Oracle的nlssort函数

  • 首页
  • 资讯中心
  • /
  • Oracle的nlssort函数

相关资讯

UE5、Unity、ThreeJS怎么选?数字孪生引擎选型干货 2026/8/26 16:22:16
E2E_端到端的ViT_Pytorch实现 2026/8/26 16:17:16
Geoserver2.27.3结合GeoWebCache发布arcgis切片(WMTS服务) 2026/8/26 16:17:16

最新资讯

Java 第k个最小元素(K’th Smallest Element)
哈森股份(603958)深度研究报告
Python 第k个最小元素(K’th Smallest Element)
频繁切换GPT和Claude太崩溃?高效能人士AI怎么用与玉芬AI实战拆解
Axure9.0让条形图实现动态交互(鼠标悬停高亮 + 显示详情卡片)
GTool: Graph Enhanced Tool Planning with Large Language Model

今日推荐

Python random 模块常用函数详解:从入门到实战
Hermes接入团队协作后,我推翻了三个效率假设
免费AI大模型调教指南:打造专属网文写作助手

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

Oracle的nlssort函数

发布时间:2026/8/26 16:22:16
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 对象就完成了自定义排序

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号