전화 번호를 테이블에 저장해야합니다. 어떤 데이터 유형을 사용해야하나요?
기다림. 답장하기 전에 읽어주세요 ..
영업 담당자가 검색 (와일드 문자 검색 포함)에이 필드를 사용할 수 있으므로이 필드는 많이 인덱싱되어야합니다.
현재 전화 번호는 XML 파일에서 다양한 형식으로 제공 될 것으로 예상됩니다. 균일 한 형식으로 변환하려면 파서를 작성해야합니까? 수백만 개의 데이터 (중복 포함)가있을 수 있으며 일부 소스 데이터가 들어올 때마다 서버 리소스 (너무 많은 전처리와 같은 활동에서)를 묶고 싶지 않습니다.
어떤 제안이라도 환영합니다 ..
업데이트 : 원본 데이터를 제어 할 수 없습니다. xml 파일의 구조가 표준입니다. xml 구문 분석을 최소로 유지하고 싶습니다. 일단 데이터베이스에 있으면 검색이 빨라야합니다. 여기에서 진행되는 한 가지 미친 제안은 Ajax AutoComplete 기능에서도 작동해야한다는 것입니다 (따라서 영업 담당자가 일치하는 항목을 즉시 볼 수 있음). 세상에 !!
답변
여기에는 다음이 포함됩니까?
- 국제 전화 번호?
- 확장?
- 실제 번호 이외의 다른 정보 (예 : “바비 요청”)?
이 모든 것이 아니라면 10 자 필드를 사용하고 숫자가 아닌 모든 데이터를 제거합니다. 첫 번째가 예이고 다른 두 개가 아니요 인 경우 두 개의 varchar (50) 필드를 사용합니다. 하나는 원래 입력 용이고 다른 하나는 숫자가 아닌 모든 데이터가 스트라이프되고 인덱싱에 사용됩니다. 2 개 또는 3 개가 예라면 확장 또는 기타 데이터가 무엇인지 결정하고 적절하게 처리하기 위해 두 개의 필드와 일종의 미친 파서를 수행 할 것이라고 생각합니다. 물론 인덱스를 만들 때 여분의 문자를 제거하는 인덱스를 사용하여 두 번째 열을 피할 수 있지만 두 번째 열을 만들고 아마도 트리거로 문자 제거를 수행 할 것입니다.
업데이트 : AJAX 문제를 해결하기 위해 생각만큼 나쁘지 않을 수 있습니다. 이것이 현실적으로 테이블에 대한 모든 작업이 수행되는 주된 방법이라면 내가 말한 것처럼 보조 열에 숫자 만 저장 한 다음 해당 열의 인덱스를 클러스터 된 열로 만듭니다.
답변
우리는 varchar (15)를 사용하고 확실히 해당 필드에 대한 색인을 생성합니다.
그 이유는 국제 표준이 최대 15 자리를 지원할 수 있기 때문입니다.
국제 전화 번호를 지원하는 경우, 전화 번호 필드의 길이를 구문 분석하고 확인하여 미국으로 돌아가는 전화를 제한하지 않도록 쿼리를 더 잘 필터링 할 수 있도록 World Zone Code 또는 Country Code를 별도로 저장하는 것이 좋습니다. 예
답변
미국 전화 번호 만 저장하는 경우 CHAR (10)을 사용하십시오. 숫자를 제외한 모든 것을 제거하십시오.
답변
나는 아마도 여기에서 명백한 것을 놓치고 있지만, 가장 긴 예상 전화 번호에 대해 충분히 길지 않은 varchar가 잘 작동하지 않습니까?
나는 경우 입니다 분명 뭔가 빠진 사람이 그것을 지적한다면, 나는 그것을 사랑 해요 것 …
답변
varchar (22)를 사용합니다. 내선 번호가있는 북미 전화 번호를 담을 수있을만큼 큽니다. 모든 불쾌한 ‘(‘, ‘)’, ‘-‘문자를 제거하거나 모두 하나의 균일 한 형식으로 구문 분석 할 수 있습니다.
알렉스
답변
SQL Server 2005는 인덱싱 된 varchar 필드의 텍스트에 대한 하위 문자열 쿼리에 매우 최적화되어 있습니다. 2005 년에는 인덱스 필드의 문자열 요약에 새로운 통계를 도입했습니다. 이는 전체 텍스트 검색에 크게 도움이됩니다.
답변
varchar를 사용하는 것은 매우 비효율적입니다. money 유형을 사용하여 사용자 선언 유형 “phonenumber”를 만들고 양수 만 허용하는 규칙을 만듭니다.
(19,4)로 선언하면 4 자리 확장명을 저장할 수 있고 국제 전화 번호를 저장할 수있을만큼 커질 수 있으며 9 바이트 만 저장됩니다. 또한 인덱스가 빠릅니다.