SQL Server查询使用正则表达式?

vic*_*ick 6 regex sql t-sql sql-server

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

例子:

8181234564
(818) 123 4564
818 - 123 - 4567
Run Code Online (Sandbox Code Playgroud)

我希望我可以使用正则表达式删除所有非数字字符,然后执行类似或"="...我可以这样做吗?

忘了提一下:我只有读取权限.

Mar*_*ins 1

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

select * from thetable where phonenum like ('%8%1%8%1%2%3%4%5%6%7%')
Run Code Online (Sandbox Code Playgroud)

当然,这也会匹配无效的条目(例如,具有额外数​​字、字符等的数字)。这可能是一个相当昂贵的查询,无法使用任何索引。

更现实的版本可能是这样的:

select * from thetable where phonenum like ('%818%123%4567%')
Run Code Online (Sandbox Code Playgroud)