对Oracle中中文、数字混杂形式的字段进行排序的方法:例如:
- order by NLSSORT(字段名,"NLS_SORT = SCHINESE_PINYIN_M"), to_number(translate(字段名, "0123456789" || 字段名, "0123456789"))
NLSSORT() 函数:如果数据库字符集选用的是ZH16GBK,那么使用order by默认是按照汉字的“二进制编码”顺序进行排序的。可以使用NLSSORT()函数可以改变Oralce 对汉字的排序规则,排序规则如下(前三条对简体中文进行排序,后两条对繁体中文进行排序):1.
SCHINESE_RADICAL_M 简体中文按照第一顺序是“部首”、第二顺序是“笔画数”进行排序。2.
SCHINESE_STROKE_M 简体中文按照第一顺序“笔画数”、是第二顺序是“部首”进行排序。3.
SCHINESE_PINYIN_M 简体中文按照拼音进行排序。上例中即对简体汉字按照拼音进行排序。4.
TCHINESE_RADICAL_M 繁体中文按照第一顺序是“部首”、第二顺序是“笔画数”进行排序。5.
TCHINESE_STROKE_M 繁体中文按照第一顺序是“笔画数”、第二顺序是“部首”进行排序。
TRANSLATE() 函数:语法:TRANSLATE(char, from, to)用法:将char中出现在from中的每个字符替换为to中的相应字符,若from比to字符串长,那么在from中比to中多出的字符将会被删除。三个参数中有一个是空,返回值也将是空值。该函数可用于剔除字段中的汉字,例:
- select TRANSLATE("例1213","0123456789"||"例1213","0123456789") as RESULT from dual;
- RESULT
- ------------
- 1213
分析:该语句要将 char--"例1213" 中出现在 from--"0123456789例1213" 中的字符替换为 to--"0123456789" 中的字符,根据 from、to 的对应关系,将 char 中的 0替换成0、1替换成1、...9替换成9,即 char 中的数字不变,又 from 比 to 长,则 from 中比 to 中多出的字符将被删除,即删除 char 中的汉字。C# 连接Oracle 数据库 并将数据库表显示出来 代码RedHat Enterprise Linux 5.0 下安装Oracle 11g相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)