DECLARE temp_cursor CURSOR FOR SELECT number FROM zfzOPEN temp_cursorDeclare @ZF varchar(3),@str2 varchar(17),@temp varchar(20); set @ZF='ZF-' set @str2=0.000000FETCH NEXT from temp_cursor WHILE @@FETCH_STATUS = 0 BEGIN set @str2=@str2+0.000001 set @Temp=@str2 set @temp=subString(@temp,3,6) set @temp=@ZF+@temp update zfz set Number=@temp --这句有问题,希望各位大虾指教 where current of temp_cursor --*****如果用游标,改为此 ***-- FETCH NEXT from temp_cursor ENDCLOSE temp_cursor DEALLOCATE temp_cursor
--最简单的就是直接这样更新 declare @i int set @i=1000000 update zfz set @i=@i+1,Number='ZF-'+right(@i,6)
--这个帖子不是刚刚解决吗?--测试--测试数据 create table zfz(Number char(9),Area varchar(10)) insert zfz select null,'西安' union all select null,'咸阳' union all select null,'宝鸡' go--最简单的就是直接这样更新 declare @i int set @i=1000000 update zfz set @i=@i+1,Number='ZF-'+right(@i,6) go--显示更新的结果 select * from zfz go--删除测试 drop table zfz/*--测试结果 Number Area --------- ---------- ZF-000001 西安 ZF-000002 咸阳 ZF-000003 宝鸡(所影响的行数为 3 行) --*/
邹哥的办法高,update zfz set @i=@i+1,Number='ZF-'+right(@i,6)在一条语句里能跟据记录数改变
SELECT number
FROM zfzOPEN temp_cursorDeclare @ZF varchar(3),@str2 varchar(17),@temp varchar(20);
set @ZF='ZF-'
set @str2=0.000000FETCH NEXT from temp_cursor
WHILE @@FETCH_STATUS = 0
BEGIN
set @str2=@str2+0.000001
set @Temp=@str2
set @temp=subString(@temp,3,6)
set @temp=@ZF+@temp
update zfz set Number=@temp --这句有问题,希望各位大虾指教
where current of temp_cursor --*****如果用游标,改为此 ***--
FETCH NEXT from temp_cursor
ENDCLOSE temp_cursor
DEALLOCATE temp_cursor
--最简单的就是直接这样更新
declare @i int
set @i=1000000
update zfz set @i=@i+1,Number='ZF-'+right(@i,6)
create table zfz(Number char(9),Area varchar(10))
insert zfz select null,'西安'
union all select null,'咸阳'
union all select null,'宝鸡'
go--最简单的就是直接这样更新
declare @i int
set @i=1000000
update zfz set @i=@i+1,Number='ZF-'+right(@i,6)
go--显示更新的结果
select * from zfz
go--删除测试
drop table zfz/*--测试结果
Number Area
--------- ----------
ZF-000001 西安
ZF-000002 咸阳
ZF-000003 宝鸡(所影响的行数为 3 行)
--*/
操作不是一條條的, 是一個一個集合的!儘量不使用 Cursor!