日期:2014-05-17  浏览次数:20532 次

怎样自动插入一个序列号(非自增量类型)?
需要对一组数据进行自然排序编号,从页面上得到一组数据如下:
jacky,jiang,chen

我想把这组数据插入数据库,并自动分配一个序号,按照顺序,例如1 jacky,2 jiang,3 chen,这个序号插入另外一个字段中,但我不想要自增量的那种字段,因为自增量的数值将会越来越大,数值太大不适合显示在前台,我需要每次获得的一组数据都是从1开始排序,怎么办?

------解决方案--------------------
使用存储过程是一个方法,参考:
--创建测试表
if OBJECT_ID('tb')>0 drop table tb 
go
select top 0 1 id,cast('name' as varchar(50)) as name into tb
GO
--创建过程
if OBJECT_ID('p_InsStr','p')>0 drop proc p_InsStr
go
create proc p_InsStr
    @insertStr varchar(1000)
as
--没有过滤防攻击代码,需要的话自己参考相关资料加入
set nocount on 
set @insertStr=LTRIM(RTRIM(@insertStr))
if left(@insertStr,1)=',' set @insertStr=stuff(@insertStr,1,1,'')
if RIGHT(@insertStr,1)<>',' set @insertStr=@insertStr+','
declare @i int 
set @i=0
while LEN(@insertStr)>0
begin
set @i=@i+1
insert tb select @i,LEFT(@insertStr,CHARINDEX(',',@insertStr)-1)
set @insertStr=STUFF(@insertStr,1,CHARINDEX(',',@insertStr),'')
end
GO
--测试结果
exec p_InsStr 'a,b,c'
exec p_InsStr ',d,e,tony,'

select * from tb 
/*
id          name
----------- --------------------------------------------------
1           a
2           b
3           c
1           d
2           e
3           tony

(6 行受影响)
*/

------解决方案--------------------
引用:
需要对一组数据进行自然排序编号,从页面上得到一组数据如下:
jacky,jiang,chen

我想把这组数据插入数据库,并自动分配一个序号,按照顺序,例如1 jacky,2 jiang,3 chen,这个序号插入另外一个字段中,但我不想要自增量的那种字段,因为自增量的数值将会越来越大,数值太大不适合显示在前台,我需要每次获得的一组数据都是从1开始排序,怎么办?