有一个表的字段ID,其值为CD20115703800,现在想要将其值顺序增加为CD20115703801、CD20115703802至CD20115703900.表如下: id order sfd
CD20115703800 xxx xxx
. xxx xxx
. xxx xxx
. xxx xxx
CD20115703900 xxx xxx请教各位该如何写sql?
CD20115703800 xxx xxx
. xxx xxx
. xxx xxx
. xxx xxx
CD20115703900 xxx xxx请教各位该如何写sql?
解决方案 »
- 求解答function的问题
- 关于分组的问题,急救…
- 集群数据库体系结构(Cluster)是个什么概念
- SQL Server转过来了,120分求救
- Oracle9i数据库共享内存问题如何解决?
- 请问关于oracal 与 c++的编程问题
- 怎样写SQL语句,在一个表中成对删除按某种条件匹配的记录?具体情况如下。
- sqlplus怎么查出某个表中各字段类型
- 如何导出表中的数据
- oracle APEX 中item 设置为popup LOV类型,如何实现从表中获取可选的VALUE值并可编辑添加新的值
- 存储过程条件用in,穿参数进去 查不到数据
- 求助:编写过程时出现“错误文本= PLS-00103”怎样解决??
select substr('CD20115703800',1,length('CD20115703800')-3)||
to_char(substr('CD20115703800',length('CD20115703800')-2,3)+level)
from dual
connect by level <=100;
--变通一下么,看你的意思是插入数据没看出你想要update数据呀
insert into table_name(id,order,sfd)
select substr('CD20115703801',1,length('CD20115703801')-3)||
to_char(substr('CD20115703801',length('CD20115703801')-2,3)+level)
from dual
connect by level <=99;
需要,写的快了点,忘记加了
insert into table_name(id,order,sfd,xxx,xxx,x.....)
select substr('CD20115703801',1,length('CD20115703801')-3)||
to_char(substr('CD20115703801',length('CD20115703801')-2,3)+level),
xxx,xxx,xxx,xxx,xxx,x...
from dual
connect by level <=99;
的执行报错。 缺失表达式
我写的只是个例子,还要根据你的要求改的,你不能直接拿过去就执行的。
或者把你的sql粘出来 我给你改改。
insert into plan(ID,COLOR,ORDER,DATE,DATE,word)
select substr('CD20115703801',1,length('CD20115703801')-3)||
to_char(substr('CD20115703801',length('CD20115703801')-2,3)+level),
ID,COLOR,ORDER,DATE,DATE,word
from dual
connect by level <=99;表的其它字段都有相应的值,而ID为空,类型为varchar2,需要将ID值顺序赋为最后一个不为空的ID值加1
--我有点弄明白你的意思了,写个通用的DECLARE
MAX_ID VARCHAR2(20);
BEGIN
--找到最大值
SELECT MAX(ID) INTO MAX_ID FROM PLAN; FOR REC IN (SELECT ROWID FROM PLAN WHERE ID IS NULL ORDER BY ROWID) LOOP
MAX_ID := SUBSTR(MAX_ID, 1, 2) ||
TO_NUMBER(SUBSTR(MAX_ID, 3, LENGTH(MAX_ID))) + 1;
UPDATE PLAN SET ID = MAX_ID;
WHERE ROWID = REC.ROWID;
END LOOP;
COMMIT;
END;
MAX_ID VARCHAR2(20);
BEGIN
--找到最大值
--SELECT MAX(ID) INTO MAX_ID FROM PLAN;
MAX_ID := 'CD20115703801';
FOR REC IN (SELECT ROWID FROM PLAN WHERE ID IS NULL ORDER BY ROWID) LOOP
--增加跳出循环判断
EXIT WHEN CD20115703801 = 'CD20115703901';
MAX_ID := SUBSTR(MAX_ID, 1, 2) ||
TO_NUMBER(SUBSTR(MAX_ID, 3, LENGTH(MAX_ID))) + 1;
UPDATE PLAN SET ID = MAX_ID;
WHERE ROWID = REC.ROWID; END LOOP;
COMMIT;
END;
UPDATE t SET ID = substr('CD20115703800',1, 2) || (substr('CD20115703800',3) + ROWNUM) WHERE ROWNUM < substr('CD20115703800',3) - substr('CD20115703900',3) + 1