日期:2014-05-18  浏览次数:20513 次

SQl问题两个帖子一起结贴一共200分
http://topic.csdn.net/u/20071018/14/e713a82e-1b2d-4043-a87d-691f04ad1bde.html(给出答案留个名一起给分)

可能我的说明有错误 再次说明 

表a生成 id 和 pwd(随机数字) 

关键是id号  

重0开始到99999 

不到5为的数字补0全部重新写入  

如此,表里面会有数据:  

01 
001 
0001 
00001  

0
00
000
0000
00000

以此类推 ,最大数为99999



------解决方案--------------------
SQL code
select right('00000' + cast(col as int),5) col from tb

------解决方案--------------------
SQL code
create table tb(col varchar(5))
insert into tb values('1')  
insert into tb values('01')  
insert into tb values('001')  
insert into tb values('0001')  
insert into tb values('00001')   
insert into tb values('0') 
insert into tb values('00') 
insert into tb values('000') 
insert into tb values('0000') 
insert into tb values('00000')
go

select right('00000' + cast(cast(col as int) as varchar),5) col from tb

drop table tb

/*
col        
---------- 
00001
00001
00001
00001
00001
00000
00000
00000
00000
00000

(所影响的行数为 10 行)
*/

------解决方案--------------------
SQL code
select top 10000 id=identity( bigint,0,1) into tmp from syscolumns a,syscolumns b

select right('00000' + cast(id as varchar) , 5) id from tmp

drop table tmp

/*
id         
---------- 
00000
00001
00002
00003
00004
00005
00006
00007
*/

------解决方案--------------------
表里有什么数据
要得到什么样的数据

表里有
1
01
001
0001
00001


是不是要得到
00001
00001
00001
00001
00001
------解决方案--------------------


update 表 set id=right('00000' + cast(id as varchar),5) 

如果ID 字段为 INT 
alter table 表 alter column id varchar(6)
update 表 set id=right('00000' + cast(id as varchar),5) 

------解决方案--------------------
SQL code

create table #(id varchar(6),pwd varchar(10))

insert into # select '0',left(checksum(newid()),6) union all select '1',left(checksum(newid()),6)




insert into # 
select left('0'+id,5) as id,left(checksum(newid()),6) from #
union all
select left('00'+id,5),left(checksum(newid()),6) from #
union all
select left('000'+id,5),left(checksum(newid()),6) from #
union all
select left('0000'+id,5),left(checksum(newid()),6) from #
union all
select left('00000'+id,5),left(checksum(newid()),6) from #


select * from #

------解决方案--------------------
SQL code
--要插入新记录?
declare @a table (id varchar(5))
declare @b table (id varchar(5))

insert @a select '0'+id id from [Table] where len(id)<5
insert [Table](id)select id  from @a
insert @b select id from @a
while @@rowcount>0
begin
    delete from @a
    insert @a select '0'+id id from @b where len(id)<5
     insert [Table](id)select id from @a
    delete from @b
    insert @b select id  from @a
end

------解决方案--------------------
SQL code


create function [dbo].[zizeng](@id int)
returns nvarchar(20) 
begin 
    declare @str nvarchar(20)
    declare @str1 nvarchar(2)
    declare @str2 nvarchar(3)
    declare @str3 nvarchar(4)
    declare @str4 nvarchar(5)
    if len(@id)=1
        begin 
            set @str1='0'+convert(nvarchar(1),@id)
            set @str2='00'+convert(nvarchar(1),@id)
            set @str3='000'+convert(nvarchar(1),@id)
            set @str4='0000'+convert(nvarchar(1),@id)
        end
    else if len(@id)=2
        begin 
            set @str2='0'+convert(nvarchar(2),@id)
            set @str3='00'+convert(nvarchar(2),@id