sql中如何让char类型的字段自动增长呢?比如123.....每次增长加1,写出具体的方法谢谢哈
------解决方案--------------------
- SQL code
DROP PROCEDURE PRO_AutoLSH 2 GO 3 CREATE PROCEDURE PRO_AutoLSH 4 ( 5 @letter varchar(10), --首字母,可以多个字母 6 @LSHkey varchar(20), --表中的流水号列名,最好是主键 7 @tablename varchar(20) --表名 8 ) 9 AS10 begin 11 DECLARE @LSHID NVARCHAR(20) 12 DECLARE @TLSH VARCHAR(20) 13 DECLARE @NUM INT 14 DECLARE @sql NVARCHAR(200) 15 ----查询该表最大的流水号 16 SET @sql='SELECT ISNULL(MAX(CONVERT(INT,SUBSTRING([email protected]+',8,4))),0)+1 FROM [email protected] 17 --创建临时表 18 CREATE TABLE TEMP1(TOTAL INT); 19 --写入查询得到的数据 20 INSERT INTO TEMP1 EXEC(@sql); 21 --再查询出值 22 SET @NUM=(SELECT TOTAL FROM TEMP1) 23 DROP TABLE TEMP1 24 --拼接下一个流水号:J+年份4位+月份2位+4位编号(如J2010120001) 25 SET @[email protected]+SUBSTRING(CONVERT(VARCHAR(100),GETDATE(),112),1,6)+SUBSTRING(CONVERT(CHAR(5),[email protected]),2,4) 26 SET @sql='' 27 SET @sql='SELECT @[email protected]+''''+' FROM [email protected] 28 29 EXEC sp_executesql @sql,[email protected] NVARCHAR(20) OUTPUT',@LSHID OUTPUT SELECT @LSHID30 end--SQL 生成流水号,参考
------解决方案--------------------
- SQL code
/* 功能:利用函数创建流水号如: fx201005260001, fx201005260002, fx201005270001 作者:陈永建 创建时间:2010-05-26 */use mastergoif(db_id('NumberDB')is not null)drop database NumberDBgocreate database NumberDBGOUSE NumberDBgoif(object_id('number')is not null)drop table numbergocreate table number( id varchar(50) not null, CreateDate datetime not null)goselect * from number--创建函数生成流水号if(object_id('fun_CreateNum')is not null)drop function fun_CreateNumgo[email protected] 前缀[email protected] 日期格式如20050512 :获取当天的日期[email protected] 长度:根据你的实际需求来填写你的长度(交易量少则长度短些)create function fun_CreateNum(@profix varchar(10),@dateFormat varchar(20),@length int)returns varchar(100)asbegin declare @MyNo varchar(100) select @MyNo= max(id) from number where datediff (dd,CreateDate,getdate())=0 --得到当天最大流水号 --isnull(目标参数,设置的值):如果目标参数为空则变为设定值 set @MyNo=convert(int,isnull(right(@MyNo,@length),0))+1 --如果今天有记录,则在最大的流水号上加1 --replicate(设定值,重复次数): 将设定值重复 set @MyNo=right(replicate(0,@length)[email protected],@length)[email protected] set @[email protected][email protected][email protected] return @MyNoendgo--调用函数--convert(varchar(20),getdate(),112):112将日期格式设置为如:20050512格式select dbo.fun_CreateNum('fx',convert(varchar(20),getdate(),112),5)--将流水号插入数据表中insert into number values(dbo.fun_CreateNum('fx',convert(varchar(20),getdate(),112),5),getdate())goselect * from number