检查以各种格式输入的电话号码是否相等

时间:2014-11-04 16:13:07

标签: sql sql-server

有一个PhoneNumber表存储用户输入的数字(例如555 555 5555,555-555-5555,555.555.5555)

我们使用第三方服务注册这些号码,然后消费者使用我们的网络服务,但仅提供10位数字(5555555555)。

我需要找到一个匹配但过滤掉我记录中的非字母数字字符。

我添加了删除非字母数字字符的功能:How to strip all non-alphabetic characters from string in SQL Server?

我尝试运行以下命令,但我总是得到0条记录,但我在表格中的记录值为555-555-5555:

SELECT COUNT(*)
FROM [dbo].[PhoneNumber]
WHERE [dbo].[RemoveNonAlphaCharacters]([Number]) = '5555555555'

3 个答案:

答案 0 :(得分:1)

SELECT COUNT(*)
FROM [dbo].[PhoneNumber]
WHERE REPLACE([Number],'-','') = '5555555555'

您可以多次使用此功能来填写所需的字符。

答案 1 :(得分:1)

您要删除所有字母字符,包括数字。试试这个变种:

Create Function [dbo].[RemoveNonAlphaNumCharacters](@Temp VarChar(8000))
Returns VarChar(800)
AS
Begin

    Declare @KeepValues as varchar(50)
    Set @KeepValues = '%[^a-zA-Z0-9]%'
    While PatIndex(@KeepValues, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')

    Return @Temp
End;

答案 2 :(得分:1)

您正在使用的功能删除数字字符。除了a-z之外的一切。谷歌的功能,删除非字母数字字符,并使用它。