在SQL中的某个字符之前和之后添加左/右数字

时间:2017-05-31 20:55:48

标签: sql

我的数据库中有以下条目:

1;3000;30;20;20;20;30000;30;21;3

我想添加;左侧的所有第一个数字以及;右侧的所有第一个数字,因此(在这种情况下)它会显示2;23 {{1} }}

请注意,字符数(;)可能会有所不同,但它们始终是相同的字符。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您可以使用以下功能获得所需内容:

CREATE FUNCTION GetCounts 
(
    @stringToSplit varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
    declare @sumDigitsBefore int = 0, @sumDigitsAfter int = 0, @currentIndex int = 0

    select @currentIndex = charindex(';', @stringToSplit)

    while @currentIndex > 0
    begin

        if @currentIndex > 1
        begin
            select @sumDigitsBefore = @sumDigitsBefore + cast(substring(@stringToSplit, @currentIndex - 1, 1) as int)
        end

        if @currentIndex < len(@stringToSplit)
        begin
            select @sumDigitsAfter = @sumDigitsAfter + cast(substring(@stringToSplit, @currentIndex + 1, 1) as int)
        end

        select @currentIndex = charindex(';', @stringToSplit, @currentIndex + 1)

    end

    -- Return the result of the function
    RETURN cast(@sumDigitsBefore as varchar(max)) + ';' + cast(@sumDigitsAfter as varchar(max))

END
GO