Oracle使用NLSSORT函数实现汉字的排序

1)、按拼音首字母排序

SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, ‘NLS_SORT=SCHINESE_PINYIN_M‘);

2)、按笔画排序
SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, ‘NLS_SORT=SCHINESE_STROKE_M‘);

3)、按部首排序
SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, ‘NLS_SORT=SCHINESE_RADICAL_M‘);

一个更详细的文章地址:http://www.2cto.com/database/201203/125387.html

时间: 2024-10-05 22:17:32

Oracle使用NLSSORT函数实现汉字的排序的相关文章

oracle中对数字加汉字的排序以及REGEXP_SUBSTR介绍

需求:有一列NAME, varchar2类型,内容如下 以上就是已经按order by name进行排序的,但不是我们想要的结果 现在需要只按数字进行排序 第一步:抽取数字由于数字有是一位的有是两位的 所以不好用substr进行截取 我们可以使用REGEXP_SUBSTR函数,使用正则表达式从字符串中抽取子串. REGEXP_SUBSTR(name, '[0-9]+') 第二步.将varchar类型的数字转换为int类型的数字 cast(yourcol as int) 可参考:sql中,把var

oracle函数获取汉字拼音的首字母

CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2(100); V_RETURN VARCHAR2(4000); FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYI

重写Oracle的wm_concat函数,自定义分隔符、排序

oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我们不知道oracle中的over函数,也不知道listagg函数. 我们先来看看wm_concat函数能实现什么功能,通俗点==>列传行,如果不明白,请看下面截图(可以看到分隔符默认为','顺序也是杂乱的)          所以,接下来,我们开始重写wm_concat函数(需要注意和需要说明的地方

ORACLE中用某个字段的首字母排序

今天项目上有个需求用某个字段的首字母排序: 正菜上: 1.使用oracle自带的函数nlssort: 1)按照汉字首字母排序:nlssort(xxx,'NLS_SORT=SCHINESE_PINYIN_M'): 2)按照汉字笔画排序:nlssort(xxx,'NLS_SORT=SCHINESE_STROKE_M'); 3)按照汉字部首排序:nlssort(xxx,'NLS_SORT=SCHINESE_STROKE_M'); 2.如果需要将空值放在前面:后面加 nulls first 3.如果需要

Oracle 中 decode 函数用法

Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN(翻译值2) ......ELSIF 条件=值n THEN RETURN(翻译值n)ELSE RETURN(缺省值)END IFdecode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值

Oracle集合操作函数:union、intersect、minus

[转]Oracle集合操作函数:union.intersect.minus 集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINUS.当使用集合操作符时,必须确保不同查询的列个数和数据类型匹配. 集合操作符具有以下注意事项: 集合操作符不适用于LOB.VARRAY和嵌套表列. UNION.INTERSECT.MINUS操作符不使用于 LONG列. 如果选择列表中包含有表达式或者函数,那么必须为表达式或者函数定义列别名. 1.U

Oracle数据库实用函数

实用函数 DECODE 语法如下: DECODE(value, if1, then1, if2,then2,if3,then3, . . . else )  Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果.当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1:如果value等于if2,Decode函数结果是then2:等等.事实上,可以给出多个if/then 配对.如果value结果不等于给出的任何配对时,Decode 结果就返回els

Oracle经常使用函数

Oracle经常使用函数 --TRUNC,TO_DATE,TO_CHAR,TO_NUMBER, SUBSTR,REPLACE.NVL .TRIM,wm_concat,upper, lower,length,add_months(sysdate,1) 查看oracle版本号: SELECT * from v$version 一.trunc函数 1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值. 其详细的语法格式例如以下: TRUNC(date[,fmt]) 当中:dat

Mysql,Oracle使用rollup函数完成行列统计

时间 2014-02-25 00:05:38  ITeye-博客 原文  http://53873039oycg.iteye.com/blog/2021445 主题 MySQLOracle数据库 昨天突然在 一篇博客中看到了Mysql也有rollup函数,原博文使用了rollup进行行列统计,原博文链接如下: http://www.cnblogs.com/lhj588/archive/2012/06/15/2550392.html 本博文主要是记录下mysql和oracle使用rollup函数进