deeptul Ответов: 1

Я хотел найти шаблон в строке и заменить этот шаблон другим


Уважаемый господин,


я хотел найти определенный шаблон в строке и заменить его другим шаблоном
например:

строка='a,b,c: d, e, f :'

findpattern :

replacepattern: ,:

выход будет a,b,c,: d, e, f ,:

Что я уже пробовал:

Alter FUNCTION dbo.RecursiveReplace_fn1
(
    @P_String VARCHAR(MAX),
    @P_Pattern VARCHAR(MAX),
    @P_ReplaceString VARCHAR(MAX),
    @P_ReplaceLength INT = 1
)
RETURNS VARCHAR(MAX)
BEGIN
    DECLARE @Index INT;

    -- Get starting point of pattern
    SET @Index = PATINDEX(@P_Pattern, @P_String);

    IF @Index > 0
    BEGIN
        -- Perform the replace
        SET @P_String = STUFF(@P_String, PATINDEX(@P_Pattern, @P_String), @P_ReplaceLength, @P_ReplaceString);

        -- Recurse
        SET @P_String = dbo.RecursiveReplace_fn1(@P_String, @P_Pattern, @P_ReplaceString, @P_ReplaceLength);
    END;
    
    RETURN @P_String;
END;

0x01AA

И вам действительно нравится делать это рекурсивно?
Еще одна вещь: подумайте о том, что ваш шаблон замены содержит шаблон поиска.

Patrice T

У вас есть вопрос ?

1 Ответов

Рейтинг:
2

OriginalGriff

Когда вы задали очень похожий вопрос 7 часов назад: Sql fuction манипулировать строкой динамически может передавая параметр string необходимо добавить любой символ в заданную позицию строки[^] Я сказал вам, что весь ваш подход был неправильным: теперь вы начинаете понимать, почему все ваше хранилище desiogn неисправно?

Эта проблема не станет лучше - вместо этого она станет еще хуже. Сделайте себе одолжение и измените свою БД, прежде чем вы зайдете так далеко, что она превратится в огромную питу.