我想创建一个接受输入的函数,如(289)648-0997或12896480997,abd只返回2896480997
我的代码适用于12896480997,但不适用于(289)648-0997
Alter FUNCTION [dbo].[fnFormatPhoneNumber](@phoneNumber VARCHAR(24))
RETURNS VARCHAR(24)
BEGIN
RETURN RIGHT(@phoneNumber, LEN(@phoneNumber) - 1)
END
Go
答案 0 :(得分:0)
使用一个案例来区分以1开头的那些和不以的那些。
todo
✓ POST /todos
1 passing (5ms)
如果第一个字符为1,则将其删除并将()替换为''。 如果不是只是替换() -
对输入的逻辑不太确定,如果你不输入带()的数字和前导1,可能可以取消第一种情况下的替换部分。
答案 1 :(得分:0)
尝试将您的功能更改为:
Alter FUNCTION [dbo].[fnFormatPhoneNumber](@phoneNumber VARCHAR(24))
RETURNS VARCHAR(24)
BEGIN
SET @phoneNumber = REPLACE(REPLACE(REPLACE(@phoneNumber,'(',''),')',''),'-','')
RETURN RIGHT(@phoneNumber, 10)
END
Go
SELECT [dbo].[fnFormatPhoneNumber]('(289)648-0997')
和
SELECT [dbo].[fnFormatPhoneNumber]('12896480997')
两人都返回:
2896480997