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

 

posted @   guwei4037  阅读(108)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示
主题色彩