Oracle nls_sort和nlssort 排序功能介绍(2012-03-21 17:05:33)转载▼标签: it 分类: 数据库
(1)ALTER SESSION SET NLS_SORT=''; 排序影响整个会话
Oracle9i之前,中文是按照二进制编码进行排序的。
在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序
oracle9i中新增了按照拼音、部首、笔画排序功能
拼音 SELECT * FROM TEAM ORDER BY NLSSORT(队名,'NLS_SORT = SCHINESE_PINYIN_M')
笔划 SELECT * FROM TEAM ORDER BY NLSSORT(队名,'NLS_SORT = SCHINESE_STROKE_M')
部首 SELECT * FROM TEAM ORDER BY NLSSORT(队名,'NLS_SORT = SCHINESE_RADICAL_M')
(2)又如在视图中查询获取道路列表:
sSql = string.Format("select distinct({0}) from {1} order by nlssort({0},'NLS_SORT=SCHINESE_PINYIN_M')", sFieldDL, sViewDL);
(3)又如
一个表中的数据是这样的:
PROJECTNO
-----------------------
钦市PC2010-5
钦市PC2011-6
钦市PC2011-40
钦南PC2011-5
钦南GC2011-5
钦市PC2011-5(还有很多)数据前2个字是市区名,后面的是文件名“-”后面的是第几号文件,我想知道如何用SQL语句将他们升序排序,需要先排列市区名,市区名相同了在升序排列后面的文件名,文件名相同了在排列后面的文件编号名。
注意:单单用select projectno from dual order by projectno asc 是不能实现的。
可使用
select projectno from dual order by substring(projectno ,1,2) asc ,substring(projectno ,3,6) asc ,substring(projectno ,9,2) asc
分享到:
相关推荐
在Oracle中,可以通过设置`NLS_SORT`参数来控制汉字的排序规则。该参数支持三种主要的汉字排序方式:拼音排序、笔画排序和部首排序。 1. **拼音排序**:通过设置`NLS_SORT=SCHINESE_PINYIN_M`来进行拼音排序。 - ...
在处理中文数据时,尤其要注意使用`NLSSORT`和相应的`NLS_SORT`参数,以确保排序的正确性。同时,合理利用DECODE和NVL函数可以更好地处理字段值可能为NULL的情况。在进行分页查询时,理解`ROWNUM`的工作原理和优化...
ORDER BY NLSSORT(DEPTNAME, 'NLS_SORT=SCHINESE_PINYIN_M') ASC; ``` 此示例中,`TDEPT`表中的`DEPTNAME`字段将按照简体中文拼音进行排序。 ##### 2. 配置NLS参数 为了使`NLSSORT()`函数能够正常工作,还需要...
在Oracle 9i及之后的版本中,新增了基于拼音、部首和笔画的排序功能,通过设置`NLS_SORT`参数来实现。 - `SCHINESE_RADICAL_M`:按照部首(第一顺序)、笔划(第二顺序)进行排序。 - `SCHINESE_STROKE_M`:按照...
12. NLSSORT(col, ['nls_param'])函数: - 作用:按照nls_param指定的方式对col字段进行排序,适用于多语言环境的排序需求。 - 示例:未提供,但使用方法类似其他函数,需要指定字段和排序方式。 以上是对Oracle...
在Windows系统中,NLS_SORT参数可以通过修改注册表来设置,具体是在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\home0\NLS_SORT键值中进行修改。 需要注意的是,由于OCR扫描文档的过程可能存在识别错误或漏识别,以上内容...
12. NLSSORT(col, [nls_param])函数:此函数用于根据指定的NLS参数对字符串col进行排序。这在处理多语言数据时特别有用,因为它可以根据不同的排序规则(如拼音、部首或笔画)进行排序。 了解并熟练使用这些Oracle...
SELECT * FROM (SELECT * FROM perexl ORDER BY NLSSORT(danwei, 'NLS_SORT=SCHINESE_PINYIN_M')) C WHERE ROWNUM = 1; 七、降序排序 在 Oracle 中,可以使用 DESC 关键字对数据进行降序排序。例如,以下语句将对 ...
SELECT * FROM 表名 ORDER BY NLSSORT(字段名, 'NLS_SORT=SCHINESE_RADICAL_M'); ``` ##### 12. REGEXP_REPLACE(ch_source, pattern) - **功能**:使用正则表达式替换字符串中的匹配项。 - **语法**:`REGEXP_...
在这个案例中,`nls_sort=schinese_pinyin_m`排序规则被用来获取每个汉字的拼音首字母。`fn_nlssort`是一个辅助函数,其目的是对输入的汉字字符串应用上述的排序规则。 函数通过循环遍历输入的字符串,每次处理一个...
`NLSSORT`函数可以按照指定的语言环境对字符串进行排序,这里通过设置参数`'NLS_SORT=SCHINESE_PINYIN_M'`,可以使得每个汉字被转换为其拼音并按拼音排序。通过这种方式,我们可以在内部逻辑中比较不同汉字的拼音值...
在Oracle中,如果你希望按照中文字符的笔画数进行排序,可以使用`NLSSORT`函数配合`NLS_SORT`参数。`NLSSORT`函数允许我们指定一个排序规则,这里我们设置`NLS_SORT=SCHINESE_STROKE_M`,其中`SCHINESE_STROKE_M`是...
- **示例**: `NLSSORT('hello world', 'nls_sort=AMERICAN')` 返回排序后的结果 ##### 13. NLS_UPPER(str,'nls_param') 根据`nls_param`参数设置,将字符串`str`转换为全大写形式。 - **示例**: `NLS_UPPER('hello...
RETURN SUBSTR(NLSSORT(p_word, 'nls_sort=schinese_pinyin_m'), 1, 4); END fn_nlssort; BEGIN IF p_str IS NULL THEN RETURN ''; END IF; v_length := LENGTH(p_str); CASE p_flag WHEN 1 THEN -- 全拼大写...
说明: 与 NLS_TIME_TZ_FORMAT 相似, 其中的一对值指定 TIMESTAMP 数据类型的默认值, 该类型除存储 YEAR, MONTH 和 DAY 日期值, HOUR, MINUTE 和 SECOND 时间值, 还存储 TIMEZONE_HOUR 和 TIMEZONE_MINUTE。...
在这个场景下,使用的排序规则是`NLS_SORT=SCHINESE_PINYIN_M`,这意味着函数将根据汉字的拼音来生成编码。NLSSORT是Oracle数据库中的内置函数,用于支持多语言排序,通过设置不同的排序规则,可以满足不同语言环境...
SELECT * FROM table WHERE 1=1 ORDER BY NLSSORT(t_.NAME, 'NLS_SORT=SCHINESE_PINYIN_M'); ``` 其中,`SCHINESE_PINYIN_M` 表示使用简体中文拼音排序规则。 2. **MySQL数据库**: MySQL 可以通过 `CONVERT` ...