TSQL: increase series number
Here a function to increase series number, I used it in inventory report to show currently available series. If you have series like ABC1001, and 5 items were sold - you can use this function to get next available series, e.g. ABC1006. Based on a GetNumbers() function from Extracting numbers with SQL Server article.
CREATE FUNCTION dbo.fSeriesAddQty(@DATA VARCHAR(8000), @intQty int)   
RETURNS VARCHAR(8000)    
AS    
BEGIN   
    declare @Pos1 int, @Pos2 int    
    declare @Result VARCHAR(8000)    
    select @Pos1=0, @Pos2=0    
    set @Pos1=PATINDEX('%[0-9.-]%', @DATA)    
    set @Pos2=PATINDEX('%[-]%', @DATA)    
    if @Pos2>@Pos1    
        set @Pos1=@Pos2+1    
    set @Pos2=PATINDEX('%[^0-9.-]%', SUBSTRING(@DATA, @Pos1, 8000) + 'X')    
    if @Pos1>0 AND @Pos2 >0    
        begin    
        set @Result=SUBSTRING(@DATA, @Pos1, @Pos2-1)    
        if isnumeric(@Result)=1    
            set @Result=Left(@DATA,@pos1-1) + cast(cast(@Result as int) + @intQty as varchar(100)) + SUBSTRING(@DATA,@Pos2+@Pos1-1, 8000)    
        else    
            set @Result=@DATA    
        end    
    else    
        set @Result=@DATA 
    return @Result   
END
Labels: Code Samples, SQL Server






 
					

1 Comments:
That's quite a function and I'm not sure that I will ever use it but thanks for posting it. Also thanks for reminding me that I must delve into SQL server.
Post a Comment
<< Home