SQL函数替换非数字值

时间:2015-07-31 12:59:33

标签: sql sql-server sql-function

我尝试做的是创建一个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 .

您怎么看?

1 个答案:

答案 0 :(得分:1)

存储第一个字符+,替换+,重新附加,返回:

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