sql 获取字符串中最小的数


Create FUNCTION [dbo].[F_GetNumInStr] ( @s NVARCHAR(MAX) )
RETURNS MONEY
AS 
    BEGIN 


        DECLARE @s1 NVARCHAR(200)
        SET @s1 = @s
        DECLARE @strlen INT
        SET @strlen = 0


        DECLARE @minstr MONEY
        DECLARE @minindex INT
        DECLARE @minlen INT
        DECLARE @cur MONEY
        WHILE PATINDEX('%[^0-9.]%', @S1) > 0 
            BEGIN 
       
                SET @strlen = LEN(REPLACE(@s, '∷', '∷∷')) - LEN(@s)      
                SET @s = STUFF(@s, PATINDEX('%[^0-9.]%', @s1) + @strlen, 1,
                               '∷')        
                SET @s1 = STUFF(@s1, PATINDEX('%[^0-9.]%', @s1), 1, '')  
            END
    
        SET @minstr = 0
        SET @cur = 0
        SET @minindex = 1
        SET @minlen = dbo.Get_StrArrayLength(@s, '∷')


        WHILE @minindex < @minlen + 1 
            BEGIN
                SET @cur = dbo.F_GetStrArrayStrOfIndex(@s, '∷', @minindex)


                IF ( @cur > 0 ) 
                    BEGIN
                        IF ( @minstr = 0 ) 
                            BEGIN
                                SET @minstr = @cur
                      
                            END
          
                        IF ( @minstr > @cur ) 
                            BEGIN      
                                SET @minstr = @cur
                       
                            END
      
                    END
                SET @minindex = @minindex + 1
            END
    
        RETURN @minstr
       
       
    END
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值