扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Oracle9i之前,中文是按照二进制编码进行排序的。在oracle9i中新增了按照拼音、部首、笔画排序功能。
成都创新互联-专业网站定制、快速模板网站建设、高性价比玉树网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式玉树网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖玉树地区。费用合理售后完善,十多年实体公司更值得信赖。
1、设置NLS_SORT参数值
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序 SCHINESE_PINYIN_M 按照拼音排序
2、Session级别的设置,修改ORACLE字段的默认排序方式:
按拼音:alter session set nls_sort = SCHINESE_PINYIN_M;
按笔画:alter session set nls_sort = SCHINESE_STROKE_M;
按偏旁:alter session set nls_sort = NLS_SORT=SCHINESE_RADICAL_M;
3、语句级别设置排序方式:
按照笔划排序 select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');
按照部首排序 select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');
按照拼音排序 此为系统的默认排序方式
select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');
4、修改系统参数(数据库所在操作系统):
set NLS_SORT=SCHINESE_RADICAL_M export NLS_SORT (sh) setenv NLS_SORT SCHINESE_RADICAL_M (csh) HKLC\SOFTWARE\ORACLE\home0\NLS_SORT (win注册表)
可以通过 “order by 字段名 asc (desc)” 命令进行排序。
sql:select * from tablename order by id DESC;
用 DESC 表示按倒序排序(即:从大到小排序) ,用 ACS 表示按正序排序(即:从小到大排序)。
#includeiostream
using namespace std;
void main() {
int n;
cin n;
int* a=new int[n];
int* order=new int[n];
for(int i=0; in; i++) {
cin a[i]; order[i]=0;
}
int eqNum=0;
for(int ord=1; ord+eqNum=n; ord++) {
int first=0;
while(order[first]!=0) first++;
// cout "ord: " ord ", first: " first ;
int min=a[first], minAt=first;
for(int j=first+1; jn; j++) {
if(order[j]!=0) continue;
if(a[j]min) { min=a[j]; minAt=j; }
}
// cout ", minAt: " minAt ", min: " min endl;
int ord0=ord;
order[minAt]=ord0;
for(int k=minAt+1; kn; k++) {
if(a[k]==min) { order[k]=ord0; eqNum++; }
}
}
for(int i=0; in; i++) {
if(i0) cout " ";
cout order[i];
}
}
DECLARE
A1 NUMBER;
TEMP VARCHAR2(120);
A2 NUMBER;
SIXNUM VARCHAR2(120);
TYPE EMP_SSN_ARRAY IS TABLE OF NUMBER
INDEX BY BINARY_INTEGER;
BEST_EMPLOYEES EMP_SSN_ARRAY;
BEGIN
SIXNUM:=' ';
TEMP:=' ';
A1:= 0;
WHILE (LENGTH(SIXNUM)14) LOOP
LOOP
--生成号码
A1 := A1 + 1;
A2 := FLOOR( DBMS_RANDOM.VALUE(1,33));
IF A2 10 AND A2 0 THEN
BEST_EMPLOYEES(A1) :='0'||A2;
DBMS_OUTPUT.PUT_LINE(BEST_EMPLOYEES(A1));
ELSE
BEST_EMPLOYEES(A1) := A2;
DBMS_OUTPUT.PUT_LINE(BEST_EMPLOYEES(A1));
END IF;
IF INSTR(SIXNUM,BEST_EMPLOYEES(A1),1,1)=0 THEN --找不到
SIXNUM:=SIXNUM||' '||BEST_EMPLOYEES(A1);
EXIT;
END IF ;
END LOOP;
END LOOP;
DBMS_OUTPUT.PUT_LINE('--------------------------------');
FOR I IN 1..BEST_EMPLOYEES.COUNT - 1 LOOP
FOR II IN I..BEST_EMPLOYEES.COUNT LOOP
IF BEST_EMPLOYEES(I) BEST_EMPLOYEES(II) THEN
--DBMS_OUTPUT.PUT_LINE(BEST_EMPLOYEES(I));
TEMP := BEST_EMPLOYEES(I);
BEST_EMPLOYEES(I) := BEST_EMPLOYEES(II);
BEST_EMPLOYEES(II) := TEMP;
END IF;
END LOOP;
END LOOP;
FOR I IN 1..BEST_EMPLOYEES.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(BEST_EMPLOYEES(I));
END LOOP;
END;
/
在会话内存的sort_area中,这部分空间属于用户全局区(UGA),但是UGA具体在哪儿得看你的服务器环境。如果使用专用服务器模式,UGA的位置位于PGA(程序全局区)中;如果使用共享服务器模式并且设置了大池(large pool),UGA位于SGA的large pool中,如果没有设置large pool,UGA位于SGA的shared pool中。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流