今天发现了个挺有意思的函数:NLSSORT,发现能给中文按拼音、笔画、部首排序,遂查了下相关资料,结果如下:

Oracle 9i开始,新增了按照拼音、部首、笔画排序功能。

通过设置NSL_SORT值来实现:

SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序

SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序

SCHINESE_PINYIN_M 按照拼音排序

实现中文排序有两种常见方式:

  1. session级

    ALTER SESSION SET NLS_SORT='XXX';

    此结果影响整个session。

  2. sql级

    SELECT * FROM TABLE_XXX ORDER BY NLSSORT(字段名, 'NLS_SORT=XXX');

例:

CREATE TABLE test_sort(NAME VARCHAR2(50));INSERT INTO test_sort(NAME) VALUES('中国');
INSERT INTO test_sort(NAME) VALUES('山西');
INSERT INTO test_sort(NAME) VALUES('北京');
INSERT INTO test_sort(NAME) VALUES('陕西');
INSERT INTO test_sort(NAME) VALUES('河北');
INSERT INTO test_sort(NAME) VALUES('湖北');
INSERT INTO test_sort(NAME) VALUES('河南');

默认排序结果: 默认排序以BINARY排序,即二进制排序

SQL> SELECT * FROM test_sort ORDER BY NAME;NAME
--------------------------------------------------
中国
北京
山西
河北
河南
湖北
陕西
7 rows selected

拼音排序结果:

SQL> SELECT * FROM test_sort ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_PINYIN_M');NAME
--------------------------------------------------
北京
河北
河南
湖北
山西
陕西
中国
7 rows selected

笔画排序结果:

SQL> SELECT * FROM test_sort ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_STROKE_M');NAME
--------------------------------------------------
山西
中国
北京
河北
河南
陕西
湖北
7 rows selected

部首排序结果:

SQL> SELECT * FROM test_sort ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_RADICAL_M');NAME
--------------------------------------------------
中国
北京
山西
河北
河南
湖北
陕西
7 rows selected

转载于:https://blog.51cto.com/baser/2139625

Oracle中文排序 NLSSORT相关推荐

  1. oracle在指定列后添加列,ORACLE中文排序及在table中指定位置增加字段

    ORACLE中文排序方式 Oracle9i之前,中文是按照二进制编码进行排序的. 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINESE_RADICAL_M ...

  2. oracle英文字母排序,ORACLE中文排序

    Oracle9i之前,中文是按照二进制编码进行排序的. 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINESE_RADICAL_M 按照部首(第一顺序).笔划 ...

  3. Oracle 中文排序

        按照拼音顺序(常用)     ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_PINYIN_M') 按照部首顺序 ORDER BY nlssort(NAME ...

  4. oracle登录账号和密码,oracle 登录账号与密码oracle按照中文排序

    oracle按照中文排序 在oracle 9i之前,对中文的排序,是默认按2进制编码来进行排序的. 9i时增加了几种新的选择: www.2cto.com 按中文拼音进行排序:SCHINESE_PINY ...

  5. oracle中的中文排序,Oracle中的中文排序方式

    测试中文排序的版本: SQL> select * from v$version; BANNER ------------------------------------------------- ...

  6. oracle+sql+按中文拼音排序,Oracle 中文字段进行排序的sql语句

    Oracle 中文字段进行排序的sql语句 1)按笔画排序 select * from Table order by nlssort(columnName,'NLS_SORT=SCHINESE_STR ...

  7. oracle中文的升序降序,Oracle汉字排序

    Oracle汉字排序 使用一下SQL select * from T_0303003 order by stock_holder 进行选取数据时(stock_holder为存放中文的字段),结果发现两 ...

  8. oracle mysql 中文排序规则_ORACLE对中文排序性能优化

    Oracle提供了以下类型的排序方式:(1)二进制排序(2)单语言形式排序(3)多语言形式排序 使用二进制排序排序字符数据的一种方法是基于字符的数值定义的字符编码方案.这就是所谓的二进制排序.二进制排 ...

  9. Oracle经典sql语句总结@sql-plus重点函数串讲与sql语句案例@中文排序详讲).doc

    1.经典的select sql语句 //注意:包含空值的数学表达式求出的结果为空值 SQL> select sal+comm from emp; //连接员工编号与员工姓名这两个字段 SQL&g ...

最新文章

  1. linux平台关闭某个进程的脚本
  2. Java后台 自动 翻页查询
  3. 近90%公司亏损,泡沫破裂期将至:对于AI投资人的耐心还多吗
  4. 【实战】用机器学习来提升你的用户增长(二)
  5. 分布式锁编写及调试分析
  6. 由于远程桌面服务当前正忙|VDI无法连接
  7. Core IO学习心得
  8. JAVA听力源码_剑桥雅思13Test4Section4听力原文与答案 The History of Coffee
  9. 力扣349. 两个数组的交集(JavaScript)
  10. BeautifulSoup库用法总结
  11. 构建安全可控的网络环境,国产化网管势在必行
  12. Windows远程桌面及其相关问题
  13. 数据库之战 | 寻找你心中的数据库漫威英雄
  14. Linux(1)- 服务器核心知识、Linux入门、VMware与centeos安装、远程连接linux、linux基本命令使用...
  15. Zbrush curve Tube ,Move topologica笔刷的使用
  16. Python调用PyMol
  17. Anaconda基本教程及常用命令(介绍、安装、基本操作、管理环境、管理包、conda和pip以及借助pqi换源)
  18. vbs恶意脚本_vbs恶意软件删除程序的分析
  19. oracle wallet java_oracle Wallet的使用
  20. maven下手动导入ojdbc6-12.1.0.1-atlassian-hosted.jar

热门文章

  1. python飞机大战程序导入_Python飞机大战项目的准备 导入Pygame最全攻略~
  2. 2017CCCC天梯赛决赛 赛后总结
  3. 热点综述 | 纵向微生物组研究的统计方法总结
  4. 进击的马云,失落的码农
  5. python特征数据类型及常用操作对比总结_如何全面解析数据并创造数据故事
  6. 你所不了解的微服务架构
  7. 电脑分屏没有声音_Win10笔记本增加双屏显示器及解决没有声音的问题
  8. Pembuatan Sistem Registrasi Kamar Hotel Berbasis Website Pada Hotel Graha Prima Pacitan 外文翻译
  9. 合并两个有序数组(给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。)
  10. 碰到文件夹损坏咋解决?