当前位置: 代码迷 >> Sql Server >> sql中怎么让char类型的字段自动增长呢?比如123.每次增长加1
  详细解决方案

sql中怎么让char类型的字段自动增长呢?比如123.每次增长加1

热度:19   发布时间:2016-04-27 12:35:15.0
sql中如何让char类型的字段自动增长呢?比如123.....每次增长加1
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
  相关解决方案