我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle中文排序 NLSSORT

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle中文排序 NLSSORT

今天发现了个挺有意思的函数: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


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle中文排序 NLSSORT

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 按中文排序

安装中文库sudo apt-get updatesudo apt-get install language-pack-zh-hans-basesudo dpkg-reconfigure locales使用import localelocal
2023-01-31

oracle中的倒序怎么排

在 oracle 中,可以通过 order by 子句实现倒序排序:使用 order by column_name desc 语法,其中 column_name 是要排序的列名。例如:select first_name, last_name
oracle中的倒序怎么排
2024-05-03

mongodb中文是如何排序的

在MongoDB中,可以使用collation选项来指定中文排序规则。通过collation选项,可以设置不同的排序规则,如大小写不敏感、区分大小写、基于拼音的排序等。以下是一个示例,展示了如何在MongoDB中使用中文排序:1. 创建一个
2023-08-30

Mysql 中文排序规则说明

使用MySQL过程中,我们经常会对一个字段进行排序查询,我们一般都是想要按照中文拼音首字母进行依次排序,但mysql中进行中文排序的时候,对汉字的排序结果往往都是错误的。 这种情况在MySQL的很多版本中都存在。 如果这个问题不解决,那么M
2022-05-13

VB.NET中怎么对文件排序

本篇文章为大家展示了VB.NET中怎么对文件排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。VB.NET文件排序之按文件尺寸大小代码如下:Public Class Form1 按照文件尺寸大小排
2023-06-17

Oracle中怎么对VARCHAR列进行排序

在Oracle中,可以使用ORDER BY子句对VARCHAR列进行排序。例如:SELECT column_nameFROM table_nameORDER BY column_name;或者指定排序方式(升序或降序):SELEC
Oracle中怎么对VARCHAR列进行排序
2024-04-09

VB.NET中怎么按文件名排序

本篇文章给大家分享的是有关VB.NET中怎么按文件名排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。VB.NET文件名排序案例:输入 : a1,a2,a10,a001 。我们
2023-06-17

Oracle中如何对变量进行排序

在Oracle数据库中,可以使用ORDER BY子句对查询结果进行排序SELECT * FROM your_tableORDER BY column1 ASC, column2 DESC;在这个示例中,我们首先根据column1的值进行
Oracle中如何对变量进行排序
2024-08-28

oracle decode怎么排序的

oracle decode 函数用于基于条件将表达式转换为指定值,在排序 decode 结果时,oracle 遵循以下规则:case when 语句排序根据 when 条件的顺序。其他表达式排序根据表达式本身。null 值被视为最小值。缺失
oracle decode怎么排序的
2024-05-30

MySQL为什么不支持中文排序?

前言或许都知道,MySQL不支持中文排序,这样的说法可以说对也可以说也不对。接下来我们分析一下:首先执行命令,查看编码集:SHOW VARIABLES LIKE "character_set%";可以看到字符集是utf8mb4,这个字符集是市面上比较使用非常多
MySQL为什么不支持中文排序?
2020-10-28

编程热搜

目录