SQLSERVER 函数,如果字符不够位数,则在前边自动补上指定的字符

2 篇文章 0 订阅
1 篇文章 0 订阅

需求: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 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值