ORACLE的自定义排序
2008-08-19 15:41
162 查看
普通排序SQL是这样的:SELECT NAME FROM TABLE ORDER BY NAME;
这时候我们需要按照自己定义的NAME的排序规则进行排序,如按照某个字典ARRAY进行排序,就需要用个临时表来完成
如建立表:C_SORT_T
create table C_SORT_T
(
SORT_ID NUMBER(10),
SORT_NAME VARCHAR2(20),
SORT_SEQ NUMBER(10)
)
然后把原有的SQL联合排序表进行查询,然后用SORT_SEQ排序就可以了。
如果是SORT array是不固定,而是在排序前传入SQL?该怎么办?
如果排序的array不大的话,可以用DECODE来达到要求,如下:
SELECT NAME FROM TABLE
排序:
SELECT NAME,DECODE(NAME,"ARRAY[0]",1,"ARRAY[1]",2,....,9999) SEQ FROM TABLE ORDER BY SEQ
如果超大的排序。。。。感觉用很难用一个SQL排吧,没有好办法
这时候我们需要按照自己定义的NAME的排序规则进行排序,如按照某个字典ARRAY进行排序,就需要用个临时表来完成
如建立表:C_SORT_T
create table C_SORT_T
(
SORT_ID NUMBER(10),
SORT_NAME VARCHAR2(20),
SORT_SEQ NUMBER(10)
)
然后把原有的SQL联合排序表进行查询,然后用SORT_SEQ排序就可以了。
如果是SORT array是不固定,而是在排序前传入SQL?该怎么办?
如果排序的array不大的话,可以用DECODE来达到要求,如下:
SELECT NAME FROM TABLE
排序:
SELECT NAME,DECODE(NAME,"ARRAY[0]",1,"ARRAY[1]",2,....,9999) SEQ FROM TABLE ORDER BY SEQ
如果超大的排序。。。。感觉用很难用一个SQL排吧,没有好办法
相关文章推荐
- 重写Oracle的wm_concat函数,以自定义分隔符、排序
- oracle 按自定义的序列排序结果集
- 重写Oracle的wm_concat函数,自定义分隔符、排序
- Oracle 自定义排序方式
- Oracle自定义排序
- ORACLE自定义顺序排序
- Oracle 借助DECODE函数,自定义顺序排序
- ORACLE自定义顺序排序-转
- oracle 自定义排序
- 自定义排序问题
- Oracle分页查询中排序与效率问题解决方法详解
- python中map、reduce、filter、自定义排序函数、装饰器函数和偏函数
- mysql中字段自定义排序
- oracle 自定义类型 type / create type
- Oracle表连接操作——Merge Sort Join(合并排序连接)
- oracle 复习之排序操作
- Oracle 重置排序 SEQUENCE
- Oracle 排序中使用nulls first 或者nulls last 语法
- MySQL自定义排序函数FIELD()
- PHP 使用用户自定义的比较函数对数组元素排序