2012-11-14 2 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. 내가 7 자리를 찾고 싶기 때문에 5와 같은 모양이 나옵니다. WHERE comment LIKE '% [0-9] [0-9] [0-9] _ [0-9] [0-9] [0-9] 0-9] [0-9] [0-9] [0-9] [0-9] % ' OR 코멘트'% [0-9] [0-9] [0-9] __ [ 0-9] [0-9] [0-9] [0-9] [0-9] [0-9] % ' OR 주석'% [0-9] [0-9] -9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] % ' OR 의견 LIKE' % [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] % ' OR 주석'% [0-9] [ 0-9] [0-9] _ [0-9] [0-9] [0-9] [0-9] % ' –

0

나는 10 자리 정수로 저장된 전화 번호에 대해 별도의 테이블을 만들 것입니다.
전화 번호를 파싱하려면 Regex를 한 번 실행하십시오.
해당 열을 색인하면 색인 탐색 속도가 나옵니다.

관련 문제