SQL 函数替换非数字值

SQL Function Replace Non-numeric Values

我想做的是创建一个 SQL 函数,它检查一个数字是否有任何非数字字符,如果确实删除它们。但如果数字有 +1234,则保留它。所以有些数字有 1234,有些有 +1234。我不想将 + 添加到所有数字。

下面是我的 SQL 函数:

CREATE FUNCTION[dbo].[fn_NonNumericCharacters] ( @strText varchar(1000) )
RETURNS VARCHAR(1000)
AS
BEGIN
WHILE PATINDEX('%[^+0-9]%', @strText) > 0
BEGIN
    SET @strText = STUFF(@strText, PATINDEX('%[^+0-9]%', @strText), 1,    '')
END
RETURN @strText
END

我试图用这个函数做的是让它寻找这些字符 ()-,.SPACE .

你怎么看?

存储第一个字符,如果它是 +,替换 +,重新追加,return:

CREATE FUNCTION[dbo].[fn_NonNumericCharacters] ( @strText varchar(1000) )
RETURNS VARCHAR(1000)
AS
BEGIN
  DECLARE @prefix VARCHAR(1) = CASE WHEN @strText LIKE '+%' THEN '+' ELSE '' END

  WHILE PATINDEX('%[^0-9]%', @strText) > 0
      SET @strText = STUFF(@strText, PATINDEX('%[^0-9]%', @strText), 1,    '')

  RETURN @prefix + @strText
END