我表tabl文件里有两列数据,格式如下:
23 aa
3456 bb
.....
我现在想把第一列的数据补足为7位(可能第一列的初始数据只有2位或3位、4位、5位等),且补后的数据,生成的新的列数据,是依次从小到大,第2列数据不变。
结果如下: 1230000 aa
1230001 aa
1230002 aa
......
1239999 aa 3456000 bb
3456001 bb
3456002 bb
......
3456999 bb ...... 请问如何用sql 语句实现
23 aa
3456 bb
.....
我现在想把第一列的数据补足为7位(可能第一列的初始数据只有2位或3位、4位、5位等),且补后的数据,生成的新的列数据,是依次从小到大,第2列数据不变。
结果如下: 1230000 aa
1230001 aa
1230002 aa
......
1239999 aa 3456000 bb
3456001 bb
3456002 bb
......
3456999 bb ...... 请问如何用sql 语句实现
解决方案 »
- ORA-07391
- 求高手帮忙,存储过程
- 绑定变量的sql通过程序查很慢,直接执行很快,这是为什么?
- VC++ 调用 Oracle Stored Porcedures
- 如何在存储过程中判断一个动态表在某一个时间点的总记录是否和上一条一样
- 如何产生巨量的测试记录
- 救命啊!!!!!!!
- 请问目前oracle最常用的版本是什么?
- SQL Plus 中,用 select * from table,显示太慢,1000多条就要跑上10多分钟,怎样修改显示速度?
- 求教!red hat 6.4 + oracle 11g r2中启动em后页面无法显示
- Microsoft odbc for oracle 出错,请帮帮忙!!
- 用多线程写的JAVA类,查询Oracle数据库,但每执行一次,死链接就增加,大家帮帮忙!谢谢!
描述的不清楚。无法解答。如果只需要保证七位不够后补可以使用RPAD函数和自己带的rownum做。
如果前面也要按大小补齐估计最好写一个函数判断了。也可以试一试CASE语句和RPAD或者LPAD结合试一试!
关键是如何用RPAD函数和rownum结合起来用,可否简单示范下!
我下面语句针对的是从表里面提取的语句:
SELECT b.constraint_type||LPad(rownum,7-length(b.constraint_type),'0')
FROM USER_CONS_COLUMNS A,USER_CONSTRAINTS B WHERE A.constraint_name=B.constraint_name
可以参考一下我上面的语句凑够7位数。
如果你只要右补齐的话应该可以了,不知道你是不是这个意思。
v_sqlstring varchar2(1024);
v_a number:=0;
v_b varchar2(2);
t number:=9;
cursor my_cur is select * from test_csdn;
begin
v_sqlstring :='insert into test_csdn1 values(:a,:b)';
open my_cur;
loop
fetch my_cur into v_a,v_b;
exit when my_cur%notfound;
for x in 1..7-length(v_a) loop
t:=9||t; --tab1每条记录扩充成多少条tab2的记录
end loop;
for i in 0..t loop
execute immediate v_sqlstring using v_a||lpad(i,7-length(v_a),0),v_b;
end loop;
end loop;
commit;
close my_cur;
end;
/