需求:tj开头后边为9位数字,如果输入值不够9位,则自动补全。
生成编号如下:
输入1,返回结果 tj000000001
输入20,返回结果 tj000000020
输入9000000100 ,返回结果 tj900000100
2021.12.29优化版本
select dbo.[fn_GetSuiteNum](8988) as SuiteNum
--标量值函数-自动生成套件编号
CREATE FUNCTION fn_GetSuiteNum(@num VARCHAR(11))
RETURNS VARCHAR(11)
AS
BEGIN
--原理是:如果位数小于9位,则固定9个0,并追加输入的值,从右边开始截取9位。反之原样返回
SET @num='tj'+ (CASE WHEN LEN(@num)<9 THEN RIGHT('000000000'+@num,9) ELSE @num END)
RETURN @num
END
2015年初始版本,实现方式太臃肿,已废除
select dbo.[fn_GetSuiteNum](8988) as SuiteNum
--标量值函数-自动生成套件编号
CREATE FUNCTION fn_GetSuiteNum(@num VARCHAR(11))
RETURNS VARCHAR(11)
AS
BEGIN
IF(len(@num)=1)
BEGIN
SET @num='tj00000000'+@num
END
ELSE IF(len(@num)=2)
BEGIN
SET @num='tj0000000'+@num
END
ELSE IF(len(@num)=3)
BEGIN
SET @num='tj000000'+@num
END
ELSE IF(len(@num)=4)
BEGIN
SET @num='tj00000'+@num
END
ELSE IF(len(@num)=5)
BEGIN
SET @num='tj0000'+@num
END
ELSE IF(len(@num)=6)
BEGIN
SET @num='tj000'+@num
END
ELSE IF(len(@num)=7)
BEGIN
SET @num='tj00'+@num
END
ELSE IF(len(@num)=8)
BEGIN
SET @num='tj0'+@num
END
ELSE IF(len(@num)=9)
BEGIN
SET @num='tj'+@num
END
RETURN @num
END