有一个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'
答案 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之外的一切。谷歌的功能,删除非字母数字字符,并使用它。