1

我需要识别我的数据库中包含电话号码的记录,以便我可以将它们发送给联系团队。

示例:tblData

  • ID
  • 评论
  • dt创建

鉴于此表结构,查询可能是:

SELECT * FROM tblData WHERE comment [HeresWhereINeedHelp]

评论可能(并且很可能会)包含各种其他数据。示例评论:

是的,我有一个可怕的经历。我希望有人打电话给我 111.222.3333。谢谢你。

应该在查询中提取包含此评论的记录,因为它包含电话号码。

我尝试了一个启用正则表达式搜索的扩展 SPROC,但性能很糟糕。系统是 SQL Server 2012。

非常感谢任何方向。

4

2 回答 2

4

你应该看看LIKE运营商。在您的情况下,您可能会寻求类似的东西

WHERE comment LIKE '%[0-9][0-9][0-9]_[0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]%'

由于您在字符串中的任何位置进行搜索,因此处理大型数据集也需要很长时间 - 您可能想要尝试的另一个选项是在输入电话号码时检查评论字段,然后使用标记该行这样的列ContainsPhoneNumber (bit).,您可以对该列进行索引并进行更快的查找。

于 2012-11-14T20:32:00.337 回答
0

我将为存储为 10 位整数的电话号码创建一个单独的表。
运行一次正则表达式以解析出电话号码。
索引该列,您将获得索引搜索速度。

于 2012-11-14T20:48:23.247 回答