Regex pattern inside SQL Replace function?

前端 未结 10 1405
梦谈多话
梦谈多话 2020-11-22 12:42
SELECT REPLACE(\'100.00 GB\', \'%^(^-?\\d*\\.{0,1}\\d+$)%\', \'\');

I want to replace any markup between two

10条回答
  •  孤城傲影
    2020-11-22 13:04

    Wrapping the solution inside a SQL function could be useful if you want to reuse it. I'm even doing it at the cell level, that's why I'm putting this as a different answer:

    CREATE FUNCTION [dbo].[fnReplaceInvalidChars] (@string VARCHAR(300))
    RETURNS VARCHAR(300)
    BEGIN
        DECLARE @str VARCHAR(300) = @string;
        DECLARE @Pattern VARCHAR (20) = '%[^a-zA-Z0-9]%';
        DECLARE @Len INT;
        SELECT @Len = LEN(@String); 
        WHILE @Len > 0 
        BEGIN
            SET @Len = @Len - 1;
            IF (PATINDEX(@Pattern,@str) > 0)
                BEGIN
                    SELECT @str = STUFF(@str, PATINDEX(@Pattern,@str),1,'');    
                END
            ELSE
            BEGIN
                BREAK;
            END
        END     
        RETURN @str
    END
    

提交回复
热议问题