我在SQL Server数据库中有一个varchar字段,该字段以许多不同的方式存储电话号码,但从本质上讲,它们都是电话号码。

例子:

8181234564
(818) 123 4564
818 - 123 - 4567

我希望可以使用正则表达式去除所有非数字字符,然后在..上执行like或“=”。

忘了提:我只有读权限。

最佳答案

如果您知道该字段包含某种有效形式的电话号码,则以下LIKE的丑陋用法将与特定号码匹配。查找818-123-4567:

select * from thetable where phonenum like ('%8%1%8%1%2%3%4%5%6%7%')

当然,这也将匹配无效的条目(例如,具有多余数字,字符等的数字)。这可能是无法使用任何索引的相当昂贵的查询。

一个更现实的版本可能是这样的:
select * from thetable where phonenum like ('%818%123%4567%')

关于使用正则表达式的SQL Server查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6036191/

10-09 02:03