to: marvinhong(边城骆驼)
我是要求按照a中字符所对应的顺序排列
比如:col_end col_ch
1 b
2 a
3 c
4 d
a中字符串值是可变的如果a = 'd','b'那么取出的结果应该是4,1这样的顺序
我是要求按照a中字符所对应的顺序排列
比如:col_end col_ch
1 b
2 a
3 c
4 d
a中字符串值是可变的如果a = 'd','b'那么取出的结果应该是4,1这样的顺序
解决方案 »
- 数据库中的must表是什么表?
- 安装oracle 11gR2总是失败,高手帮我这个菜鸟看看啊。。。
- 请教一个语法问题
- 这个SQL特别慢,大家帮我看看吧
- 关于删除物化视图出错的问题
- 返回类型为ref cursor的自定义函数,如何调用这个函数
- oracle 存储过程 输出结果集,使用package遇到的问题,在线求助。
- 初学者碰到的问题
- 帮帮忙看看OCA题库里的一道题~
- Archive process error: ORACLE Instance oemrep - Can not allocate log, archival required
- 紧急求助:怎样查询两个相邻的分区里的数据?
- 如何在服务器上分配表空间大小?服务器总共为该数据库分配了10G! 急??
union all
select * from test where col_ch='a';
a中的内容是不定的啊,你这样做不是很麻烦?还要动态的出sql 语句?
还有这样的sql执行效率会不会很低啊?
你的办法排序也不对,系统会按照第一个字段排序啊
SQL> SELECT * FROM BAO_TEMP
2 / COL_END COL_CHR
---------- --------------------
1 B
2 A
3 C
4 D目前歷時: 00:00:00.32
SQL> DECLARE
2 STR VARCHAR2(20);
3 I NUMBER(10);
4 J NUMBER(10);
5 STR_V VARCHAR2(20);
6 SQL_STR VARCHAR2(100);
7 BEGIN
8 STR:='''A'',''B'',''C'',''D''';
9 DBMS_OUTPUT.PUT_LINE(STR);
10 I:=LENGTH(STR)+1;
11 I:=I/4;
12 DBMS_OUTPUT.PUT_LINE(TO_CHAR(I));
13 FOR J IN 1..I LOOP
14 STR_V := SUBSTR(STR,J*4-2,1)||TO_CHAR(J);
15 UPDATE BAO_TEMP SET COL_CHR = STR_V
16 WHERE COL_CHR = SUBSTR(STR,J*4-2,1);
17 COMMIT;
18 SQL_STR:='SELECT COL_END FROM BAO_TEMP ORDER BY SUBSTR(COL_CHR,2,2)';
19 --上面的SQL語句能得到你的要求
20 --UPDATE BAO_TEMP SET COL_CHR = SUBSTR(COL_CHR,1,1) --用來恢復表
21 --WHERE COL_CHR = SUBSTR(STR,J*4-2,1)||TO_CHAR(J);
22 --COMMIT;
23 DBMS_OUTPUT.PUT_LINE(STR_V);
24 END LOOP;
25 END;
26 /
-------------------------------------
SQL> SELECT COL_END FROM BAO_TEMP ORDER BY SUBSTR(COL_CHR,2,2)
2 / COL_END
----------
2
1
3
4
from (select COL_END, COL_CH from SYS_COLS where COL_CH in ( a )) temp_table
order by col_ch;