我表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 语句实现
解决方案 »
- Oracle 有没有二选一的方法
- 请问ORACLE导入问题。
- 计算问题?
- 在SQL中,在用关联子查询时,如果是在同一个表中操作,为什么要求这个表有一个别名,谢谢
- Oracle10g快速启动程序的思路遇到问题
- Oracle后台资源锁定问题
- oracle存储过程的动态参数问题
- 如何判断参数是否为空?
- 如何插入时实现自动行号增加呢,比如现在有个字段是max,最大为5,要插入的话应是其为6,那如何用sql实现呢,请大家指导
- 我64位操作系统,安装oracle12c后,在cmd命令打开显示Windows\system32;并且启动后输入命令都显示:不是内部或外部命令。。。。。。。
- 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;
/