2012-11-14 68 views
1

我需要識別包含電話號碼的數據庫中的記錄,以便我可以將它們發送給聯繫人小組。如何識別包含電話號碼的記錄

例子: tblData

  • ID
  • 評論
  • dtCreate

鑑於這種表結構,查詢可能是:

SELECT * FROM tblData WHERE comment [HeresWhereINeedHelp] 

的評論可能(可能會)包含各種其他數據。一個示例評論:

是的,我有一個可怕的經歷。我想要有人給我打電話111.222.3333。謝謝。

包含該評論的記錄應該被拉入查詢中,因爲它包含電話號碼。

我試過擴展SPROC,使正則表達式搜索,但表現是可怕的。該系統是SQL Server 2012.

非常感謝任何方向。

回答

5

你應該看看LIKE operator。在你的情況,你可能會去的東西沿着

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).這樣的列標記該行。這樣,您可以在該列上編制索引並進行更快速的查找。

+0

此外:這將對格式的變化非常敏感 - 如果電話號碼具有不同的間距,如'(123)456 - 7890',則必須使用額外的過濾器來捕捉。 – lyrisey

+0

謝謝,mikurski。看起來像5會讓我在那裏,因爲我想找到7位數,以及:WHERE comment LIKE'%[0-9] [0-9] [0-9] _ [0-9] [0-9] [ 0-9] [0-9] [0-9] [0-9]%' 或評論LIKE'%[0-9] [0-9] [0-9] __ [ 0-9] [0-9] [0-9] _ [0-9] [0-9] [0-9] [0-9]%' 或評論LIKE'%[0-9] [0 -9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]%' 或評論LIKE' %[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]%' 或評論LIKE'%[0-9] [ 0-9] [0-9] _ [0-9] [0-9] [0-9] [0-9]%」 –

0

我會爲電話號碼創建一個單獨的表格存儲爲10位整數。
運行正則表達式一次解析出電話號碼。
索引該列,您將獲得索引查找速度。