`

oracle中文排序-按笔画、按部首、按拼音排序

阅读更多
一、中文排序  
   1. //按照笔划排序

   2. select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');

   3. //按照部首排序

   4. select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');

   5. //按照拼音排序,此为系统的默认排序方式

   6. select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');

二、排序字段为空(以下内容转载http://space.itpub.net/10768286/viewspace-269175)
   1、缺省处理

Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前
2、使用nvl函数

nvl函数可以将输入参数为空时转换为一特定值,如
nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过这个函数可以定制null的排序位置。
3、使用decode函数
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
decode函数比nvl函数更强大,同样它也可以将输入参数为空时转换为一特定值,如
decode(employee_name,null,’张三’, employee_name)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过这个函数可以定制null的排序位置。

DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。DECODE有什么用途呢?先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下:select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value 等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。






4、使用case语法

Case语法是Oracle 9i后开始支持的,是一个比较灵活的语法,同样在排序中也可以应用
如:
select
*
   from employee
     order by (case employee_name
                 when null then
                    '张三'
                        else
                          employee_name
                                     end)
表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过case语法同样可以定制null的排序位置。

5、使用nulls first或者nulls last语法

Nulls first和nulls last是Oracle Order by支持的语法
如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)
使用语法如下:
--将nulls始终放在最前
select * from zl_cbqc order by cb_ld nulls first

--将nulls始终放在最后
select * from zl_cbqc order by cb_ld desc nulls last

 

分享到:
评论

相关推荐

    oracle排序方法拼音,部首,笔画

    ### Oracle排序方法:拼音、部首、笔画 在Oracle数据库中,为了适应不同语言环境下的数据处理需求,提供了一套强大的多语言支持工具。其中,“NLS_SORT”参数允许用户按照不同的规则对数据进行排序,这对于处理中文...

    oracle数据库中汉字排序方法

    - **特点**:先按部首排序,再按笔画数排序。 - **应用场景**:适用于需要按照传统中文排序规则(如字典或词典)进行排序的情况。 2. **SCHINESE_STROKE_M**:按照汉字笔画数排序。 - **特点**:直接根据每个...

    oracle__汉字排序

    通过上述介绍,我们可以看到Oracle数据库提供了多种方式来设置汉字的排序规则,包括拼音排序、笔画排序和部首排序等。这些排序规则的设置不仅可以在会话级别进行,也可以在系统级别进行。对于不同的应用场景,可以...

    oracle排序

    三、按拼音排序 在 Oracle 中,可以使用 NLSSORT 函数对数据进行拼音排序。例如,以下语句将对 perexl 表中的数据按照 danwei 列的拼音进行排序: SELECT * FROM perexl ORDER BY NLSSORT(danwei, 'NLS_SORT=...

    对Oracle 排序中的几种常用排序的介绍

    1. **按拼音排序**:Oracle支持按照汉字的拼音进行排序,这在处理中文数据时非常有用。可以使用`NLSSORT`函数配合`NLS_SORT`参数来实现。例如,以下语句会按照汉语拼音对`danwei`字段进行升序排序: ```sql select...

    oracle指定排序的方法详解

     1、设置NLS_SORT参数值 SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序 SCHINESE_PINYIN_M 按照拼音排序  2、Session级别的...

    Oracle 中文字段进行排序的sql语句

    Oracle提供了多种方式来实现中文字段的排序,包括按照笔画、部首以及拼音。下面将详细阐述这些方法及其背后的原理。 首先,`NLSSORT`函数是Oracle数据库用于排序的关键工具,它允许我们指定特定的语言排序规则。在...

    oracl几个函数

    在Oracle 9i及之后的版本中,新增了基于拼音、部首和笔画的排序功能,通过设置`NLS_SORT`参数来实现。 - `SCHINESE_RADICAL_M`:按照部首(第一顺序)、笔划(第二顺序)进行排序。 - `SCHINESE_STROKE_M`:按照...

    Oracle数据库10g-支持全球化特性的平台-Powe.pptx

    字符集扫描程序和语言索引则优化了对中文数据的处理,包括简体和繁体中文的转换,以及多种中文排序方式,如笔画、拼音、部首和二进制排序。 Oracle 10g的全球化特性还包括不区分大小写的查询和排序功能。这使得用户...

    ORACLE常用函数总结

    支持中文排序方式,如部首、笔画和拼音。 - 示例:`SELECT NLS_INITCAP('ab cde') "test", NLS_INITCAP('a b c d e', 'nls_sort= SCHINESE_PINYIN_M') "test1" FROM dual;` 11. NLS_LOWER(chr, ['nls_param'])函数...

    oracle查询语句大全

    9i之后,提供了拼音、部首、笔画的排序方式。 - 可通过设置`NLS_SORT`参数来控制排序规则。 17. **对象名使用中文**: - Oracle 8i支持在对象名中使用中文字符。 18. **SQL*Plus启动选项修改**: - 可以在`$...

    oracle函数大全

    - 按部首排序: ```sql SELECT * FROM 表名 ORDER BY NLSSORT(字段名, 'NLS_SORT=SCHINESE_RADICAL_M'); ``` ##### 12. REGEXP_REPLACE(ch_source, pattern) - **功能**:使用正则表达式替换字符串中的匹配项...

    Oracle实际应用语句大全

    从Oracle 9i开始,提供了更多的中文排序方式,包括按照拼音、部首和笔画进行排序。这可以通过设置`NLS_SORT`参数来实现不同的排序规则: - `SCHINESE_RADICAL_M`: 按照部首(第一顺序)、笔划(第二顺序)进行排序。...

    oracle查询语句大全.pdf

    - Oracle9i后,可以设置`NLS_SORT`参数来按拼音、部首或笔画对中文进行排序。 13. **对象名使用中文**: - Oracle8i以后,对象名可以使用中文字符。 14. **改变SQL*Plus启动选项**: - 在`$ORACLE_HOME/sqlplus...

    oracle查询语句大全[定义].pdf

    - 在Oracle中,可以通过设置NLS_SORT参数来改变排序方式,如按拼音、部首或笔画排序。 12. 特殊字符: - `SELECT 'Welcome to visit'||CHR(10)||'www.CSDN.NET' FROM DUAL;` 在字符串中添加回车符。 13. 数据库...

    oracle查询语句大全.doc

    Oracle9i后,可以通过设置`NLS_SORT`参数实现按拼音、部首或笔画排序。 17. **对象名支持中文**: Oracle8i及以上版本允许使用中文作为对象名。 18. **SQL*Plus启动选项**: 可以在`$ORACLE_HOME/sqlplus/admin...

    oracle查询语句大全.docx

    Oracle9i后,可以设置`NLS_SORT`参数进行中文排序,例如按照拼音、部首或笔画。 13. **对象名支持中文**: Oracle8i及以后版本允许对象名使用中文。 14. **SQL*Plus启动选项**: `$ORACLE_HOME/sqlplus/admin/...

Global site tag (gtag.js) - Google Analytics