SQL Server标量函数例子
SQL Server的函数是非常实用的功能,简单的有自带的Convert等类型转换的函数,如果需要复杂点的功能则需要用户自定义函数。
自定义函数又分为表值函数、标量函数等,其中标量函数是比较常用的,可以完成一些数据格式的转换。表值函数返回一张表,可以结合存储过程或单独使用。这里拍砖引玉,贴两段实用功能的标量函数作为参考。
一、字符串填充
create function [dbo].[PadLeft](@OriginalString varchar (20), @PaddingChar char (1), @TotalLength int) Returns Varchar (24) As Begin Declare @NewString varchar ( 24 ) Select @NewString = IsNull ( Replicate ( @PaddingChar , @TotalLength - Len ( isnull ( @OriginalString , 0 ))), '' ) + @OriginalString Return @NewString End
调用方式:
select dbo.PadLeft('101', '0', 10) --1010000000
二、字符串转16进制
create FUNCTION [dbo].[VarCharToHex] ( -- Add the parameters for the function here @Str varchar(400) ) RETURNS varchar(800) AS BEGIN declare @i int, @Asi int, @Mods int, @res varchar(800), @Len int, @Cres varchar(4), @tempStr varbinary(400) select @i = 1, @res = '', @Len = DATALENGTH(@Str), @tempStr = CONVERT(varbinary,@Str) while @i<=@Len begin select @Asi = SUBSTRING(@tempStr,1,1), @Cres='' while @Asi<>0 begin select @Mods = @Asi % 16, @Cres = case when (@Mods > 9) then char(ASCII('A')+@Mods - 10)+@Cres else CAST(@Mods AS varchar(4)) + @Cres end, @Asi = @Asi /16; end; select @res = @res + @Cres, @tempStr = SUBSTRING(@tempStr,2,@Len - 1), @i = @i + 1 end; return @res; END
调用方式:
select [dbo].[VarCharToHex]('00001375') --3030303031333735