전화를 위해 SQL varchar (length)에서 고려해야 할 가장 긴 전 세계 전화 번호는 무엇입니까?


200

전화 varchar(length)용 SQL 에서 고려해야 할 가장 긴 전 세계 전화 번호는 무엇입니까?

고려 사항 :

  • + 국가 코드
  • 지역 번호의 경우 ()
  • 내선 확장의 x + 6 숫자 (8 {space}로 설정)
  • 그룹 간 간격 (예 : 미국 전화의 경우 + x xxx xxx xxxx = 3 공백)
  • 여기 내가 당신의 도움이 필요한 곳입니다.

내 특별한 경우에는 카드가 필요하지 않습니다. 번호는 국가 코드로 시작하여 내선 번호, 팩스 / 전화 등의 주석이 없거나 전화 카드가 필요하지 않습니다.


1
내가 좋은 솔루션이 될 것입니다 긴 값으로 수를 변환하는 생각, 그리고 그것은 단지 64 비트 공간이 필요합니다, 나는 몇 년 동안이를 사용하고, 아무런 문제


1
@MattDiPasquale는 이미 여기 에 언급 되었지만 감사합니다!
Shimmy Weitzhandler

2
그러나 그 대답 에는 내가 준 링크가 포함되어 있지 않습니다. 천만에요. :-)
ma11hew28

답변:


79

각 문자에 20 자만 저장하는 경우 varchar (30)과 varchar (100) 사이에 오버 헤드 차이가 없다는 점을 고려할 때주의 측면에서 실수를하고 50을 만드십시오.


26
지식을 위해서만 : 오버 헤드가있을 때? 답변에 출처를 포함시켜 기본 정보를 익히십시오.
Shimmy Weitzhandler

6
나는 그것이 사실이어야한다는 것을 알고 있지만 항상 그런 것은 아닙니다. MySQL (예 : 전체 길이)은 정렬에 사용됩니다. 최소한의 노력을 기울이는 것이 가장 좋습니다.
모건 토커

15
두 열 크기간에 스토리지 크기 차이는 없습니다 . 특정 데이터베이스에 따라 오버 헤드가 크거나 중요 할 수 있습니다. 예를 들어 SQL Server는 데이터 페이지 크기를 예측하고 액세스 및 정렬을 최적화하는 데 많은 기능을 잃습니다. 항상 그렇듯이 테스트하십시오.
매트 Enright

16
조기 최적화는 모든 악의 근원입니다.
Harindaka

78
명백한 일반화는 더욱 악화됩니다. 마음에 최적화 시스템을 설계하는 것은 없다 결코 악을 자체 - 하나, 불필요한 눈에 띄지와 마이너 효율성에 과도한 시간을 할애 할 때 최적화 악이된다.
jbowman

167

'+', '()', '-', 공백 및 사물을 저장하지 않는다고 가정하면 지역 관습과 네트워크 분포에 따라 다양한 표현 문제가 발생할 수 있습니다. 어쨌든 국제 전화 네트워크 (대부분의 국가 네트워크가 연결되어 있음 )에 대한 ITU-T 권장 사항 E.164 는 전화 번호를 입력 하는 데 필요한 국제 전화 접두사와 같은 접두사를 포함하지 않고 국가 번호를 포함하여 전체 번호 를 국가마다 다르거 나 PBX 내선 번호와 같은 접미사를 포함하여 최대 15 자 입니다.

통화 접두사는 수신자가 아닌 발신자에 따라 다르므로 전화 번호와 함께 (많은 상황에서) 저장해서는 안됩니다. 데이터베이스에 개인 주소록에 대한 데이터가 저장되어있는 경우 (국제 전화 접두사를 저장하는 것이 의미가있는 경우) Wikipedia에 따라 처리해야하는 가장 긴 국제 접두사 는 현재 핀란드에서 5 자리입니다.

접미사와 관련하여 일부 PBX는 최대 11 자리 확장명을 지원합니다 ( Wikipedia에 따르면 ). PBX 내선 번호는 다른 전화 걸기 계획의 일부이므로 (PBX는 전화 회사의 교환과 분리되어 있음) 내선 번호는 구분 문자를 사용하거나 다른 열에 저장하여 전화 번호와 구별 할 수 있어야합니다.


5
형식 문자 ( '+', '(', ')', '-'및 ''와 같은)를 저장하지 않고 다른 국가의 숫자를 저장하는 경우 형식을 나타내는 열을 추가 할 수 있습니다 숫자가 표시 될 때 숫자의 유형.
3'13

38
결론 : 15문자. 접두사와 접미사를 저장하는 경우 결론은 5 + 15 + 11 = 31입니다.
AlikElzin-kilaka

3
@MattEnright, 귀하의 답변에서 AlikElzin의 의견 을 업데이트해야한다고 생각합니다 .
Shimmy Weitzhandler가

4
'+'는 프리젠 테이션이 아닙니다. en.wikipedia.org/wiki/List_of_international_call_prefixes
qubodup

17

GSM 사양 3GPP TS 11.11 에서는 '다이얼 번호'에 대해 MSISDN EF (6F40)에 10 바이트가 별도로 설정되어 있습니다. 이것은 전화 번호의 GSM 표현이므로 사용량이 조금씩 바뀌기 때문에 (그리고 항상 괄호가있을 가능성이 있습니다) 22 문자의 데이터가 충분해야합니다.

내 경험상 오픈 / 클로즈 괄호는 하나뿐입니다. 위의 이유입니다.


10

조금 더 나쁘다. 국제 전화에 전화 카드를 사용하기 때문에 미국의 현지 번호 + 계정 번호 (6 자리) + 핀 (4 자리) + "일시 중지"+ 위에서 설명한 내용.

다른 경우가있을 것 같아


2
당신은 아주 좋은 지적을 얻었습니다. 내 MSG에 몇 줄을 추가 PLS 읽기
흔들 Weitzhandler에게

10
전화 카드 재 다이얼은 데이터베이스에 없어야합니다. 이것은 전화 걸기 규칙에 따라 전화를 걸 때 추가되는 부분입니다. 저장된 번호는 다이얼 관련 정보없이 ISO 형식이어야합니다.
TomTom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.