sql 获取字符串中最小的数

来源:互联网 发布:linux更改root密码 编辑:程序博客网 时间:2024/05/17 00:00

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