根据需求,需要把某一些数字或字符串进行格式化,前导或后导字符串。insus.net把这个功能写成一个自定义函数。需要时,直接使用即可。
set ansi_nulls on go set quoted_identifier on go -- ============================================= -- author: insus.net -- create date: 2019-05-10 -- update date: 2019-05-10 -- description: 前导或后导字符 -- ============================================= create function [dbo].[svf_leadingstring] ( @originalcharacter nvarchar(max), @expectedlength int, @padcharacterstring nvarchar(max), @leadingtoright bit ) returns nvarchar(max) as begin declare @rtv nvarchar(max) = @originalcharacter if len(isnull(@originalcharacter,'')) < @expectedlength begin declare @replicatestring nvarchar(max) = replicate(@padcharacterstring, @expectedlength - len(@originalcharacter)) if @leadingtoright = 1 set @rtv = @originalcharacter + @replicatestring else set @rtv = @replicatestring + @originalcharacter end return @rtv end go
举例可以更好说明函数使用如何。
--创建临时表,并随机添加一些数据 declare @dumptable as table ([originalcharacter] nvarchar(max)) insert into @dumptable ([originalcharacter]) values (12) insert into @dumptable ([originalcharacter]) values (3456) insert into @dumptable ([originalcharacter]) values ('rt') insert into @dumptable ([originalcharacter]) values ('gfr') insert into @dumptable ([originalcharacter]) values ('345e') insert into @dumptable ([originalcharacter]) values (43) insert into @dumptable ([originalcharacter]) values (7777) insert into @dumptable ([originalcharacter]) values (254687) insert into @dumptable ([originalcharacter]) values ('adrf') --设置自定义函数的参数 declare @expectedlength int = 8, @padcharacterstring nvarchar(max) = '0' select [originalcharacter], [dbo].[svf_leadingstring]([originalcharacter],@expectedlength,@padcharacterstring,0) as [leadingtoleft], [dbo].[svf_leadingstring]([originalcharacter],@expectedlength,@padcharacterstring,1) as [leadingtoright] from @dumptable