SQL怎样自动生成编号格式如:XX0001, XX0002 ,XX9999
各位大神求代码
CREATE PROC CreateMaxNum
(
@NumberHeader NVARCHAR(40) --号码单头类型
)
DECLARE @NumberHeader NVARCHAR(40), --编号头
@NumberMiddle CHAR(8), --编号中间规则
@MaxNum CHAR(8), --编号最大流水号
@SQL NVARCHAR(4000)
SET @NumberMiddle= CONVERT(CHAR(8),GETDATE(),112) --设置中间编码规则
SET @SQL = 'SELECT @Num=RIGHT(''0000''+LTRIM(MAX(RIGHT(号码,4))+1),4)
FROM 号码表
WHERE 号码 LIKE '''+ @NumberHeader+'%'' ';
EXEC sp_executesql @Sql,N'@Num NVARCHAR(40) OUTPUT',@MaxNum OUT
IF @MaxNum IS NULL --不存在该类型的号码,插入流水号为1的号码,
BEGIN
SELECT @NumberHeader + @NumberMiddle + '0001'
END
ELSE
BEGIN --生成最大流水号
SELECT @NumberHeader + @NumberMiddle + @MaxNum
END
这段代码可以生成bv +年月日+编号,你把中间的年月日去掉就可以了,试一试
兄弟你这个不对啊
@茹愿的小可爱: 哪里不对?
能否直接给个我要的这种格式的代码
@茹愿的小可爱: CREATE PROC CreateMaxNum
(
@NumberHeader NVARCHAR(40) --号码单头类型
)
DECLARE @NumberHeader NVARCHAR(40), --编号头
@MaxNum CHAR(8), --编号最大流水号
@SQL NVARCHAR(4000)
SET @SQL = 'SELECT @Num=RIGHT(''0000''+LTRIM(MAX(RIGHT(号码,4))+1),4)
FROM 号码表
WHERE 号码 LIKE '''+ @NumberHeader+'%'' ';
EXEC sp_executesql @Sql,N'@Num NVARCHAR(40) OUTPUT',@MaxNum OUT
IF @MaxNum IS NULL --不存在该类型的号码,插入流水号为1的号码,
BEGIN
SELECT @NumberHeader + '0001'
END
ELSE
BEGIN --生成最大流水号
SELECT @NumberHeader + @MaxNum
END
@茹愿的小可爱: 你是不是什么都不会?
@OIMM: 对的兄弟
@OIMM: 不要带日期的
@茹愿的小可爱: 后面这个就是没日期的呀
@OIMM: 谢谢大哥
@茹愿的小可爱: 加油,兄弟!忙活半天了,别忘了给豆子哦
循环序列,这种方法最简单了
建议在程序里面做掉,数据库最好不要做太多的逻辑处理。
– ?,???? 5年前