oracle实现汉字按照拼音、笔画和部首排序
oracle实现汉字按照拼音、笔画和部首排序
找了相关的一些资料,都说的不是很清楚,自己也研究了下,终于搞明白了,希望对大家有帮助。
需要说明的是下面的方法需要ORACLE9i和以上的版本才支持。
Oracle9i之前,中文是按照二进制编码进行排序的。
在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序
helloword代码如下:
表名为 mt ,其中mtmc字段是中文,下面分别实现按照单位名称的笔划、部首和拼音排序。
1: 按照笔划排序
select * from mt order by nlssort(mtmc,'NLS_SORT=SCHINESE_STROKE_M');
2: 按照部首排序
select * from mt order by nlssort(mtmc,'NLS_SORT=SCHINESE_RADICAL_M');
3: 按照拼音排序,此为系统的默认排序方式
select * from mt order by nlssort(mtmc,'NLS_SORT=SCHINESE_PINYIN_M');
相关文档:
Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER &nbs ......
语法:TRANSLATE(expr,from,to)
expr: 代表一串字符,from 与 to 是从左到右一一对应的关系,如果不能对应,则视为空值。
举例:
select translate('abcbbaadef','ba','#@') from dual (b将被#替代,a将被@替代)
select translate('abcbbaadef','bad','#@') from dual (b将被#替代,a将被@替代,d对应的值是空 ......
异机恢复过程:
在rman>run
{
allocate channel ch00 type 'sbt_tape' parms="ENV=(NB_ORA_CLIENT=zjddms1)";
set newname for datafile 1 to '/oradata/zjdms/1.dbf';
......
set newname for datafile 23 to '/oradata/test/23.dbf';
set newname for datafile 24 to '/oradata/test/24.dbf';
restore databas ......
今天客户的一套RAC环境出现问题
双节点RAC环境中,一个节点因为锁竞争而挂起,shutdown之后无法启动。
故障出现时我正在路上,匆匆回到家中,处理故障。
解决之后查找故障原因。
检查当时的AWR信息发现Top 5 Timed Events显示如下信息:
Top 5 Timed Events &nb ......