Sql电话号码转换器功能

时间:2015-09-29 16:14:24

标签: mysql sql

我想创建一个接受输入的函数,如(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

2 个答案:

答案 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