我尝试做的是创建一个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 .
您怎么看?
答案 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