Який найдовший можливий номер телефону у світі, який я повинен врахувати, у варшарі SQL (довжина) для телефону


200

Який найдовший у світі можливий номер телефону, який я повинен врахувати в SQL varchar(length)для телефону.

міркування:

  • + для коду країни
  • () для коду району
  • x + 6 цифр для розширення Extension (тому зробіть це 8 {пробіл})
  • пробіли між групами (тобто в американських телефонах + x xxx xxx xxxx = 3 пробіли)
  • ось де мені потрібна ваша допомога, я хочу, щоб вона була у всьому світі

Враховуйте, що в моєму конкретному випадку зараз мені не потрібні картки тощо. Номер починається з коду країни і закінчується розширенням, відсутність коментарів щодо факсу / телефону тощо.


1
Я думаю, що перетворення номера в довге значення було б хорошим рішенням, і йому знадобиться лише 64-бітовий простір, я використовую це роками, жодних проблем


1
@MattDiPasquale вже згадувався тут , але дякую!
Шиммі Вайцхандлер

2
Правильно, але ця відповідь не містила посилання, яке я дав. Ласкаво просимо. :-)
ma11hew28

Відповіді:


79

Добре, враховуючи, що між варчаром (30) і варчаром (100) немає різниці, якщо ви зберігаєте лише 20 символів у кожному, помиляйтесь на стороні обережності і просто зробіть це 50.


26
Тільки для знання: то коли колись є накладні витрати? будь-ласка, включіть у свою відповідь джерело, щоб ми могли продовжувати та вивчати основи з нього.
Шиммі Вайцхандлер

6
Я знаю, що так має бути, але це не завжди. У MySQL (наприклад) повна довжина використовується для сортування. Найкраще докласти хоч якісь мінімальні зусилля.
Морган Токер

15
Там немає розміру сховища різниці між цими двома розмірами стовпців. Існує велика ймовірність накладних витрат, значних чи інших способів, залежно від конкретної бази даних. Наприклад, SQL Server втрачає багато можливостей передбачати розміри сторінок даних та оптимізувати таким чином доступ та вирівнювання. Як завжди, тест.
Метт Енрайт

16
Передчасна оптимізація - корінь усього зла.
Харіндака

78
Платинові узагальнення ще гірші. Розробка системи з оптимізацією на увазі ніколи не є злом сама по собі - оптимізація стає злою, коли людина приділяє непомірну кількість часу зайвій, непомітній та незначній ефективності.
jbowman

167

Припустимо, що ви не зберігаєте такі речі, як пробіли "+", "()", "-", а також те, що у вас є (і чому б ви це робили, вони представляють собою презентаційні проблеми, які залежать від місцевих звичаїв та мережевого розповсюдження у будь-якому разі), рекомендація МСЕ-Т E.164 для міжнародної телефонної мережі (до якої більшість національних мереж підключено) визначає, що весь номер (включаючи код країни, але не включає префікси, такі як міжнародний префікс виклику, необхідний для набору номера, який залежить від країни до країни і не включає суфікси, такі як номери розширення АТС), максимум 15 символів .

Префікси виклику залежать від абонента, а не від виклику, і тому не слід (за багатьох обставин) зберігати номер телефону. Якщо база даних зберігає дані для особистої адресної книги (в цьому випадку сенс зберігання префіксу міжнародного дзвінка має сенс), найдовші міжнародні префікси, з якими вам доведеться мати справу ( згідно з Вікіпедією ), наразі у Фінляндії мають 5 цифр.

Що стосується суфіксів, то деякі АТС підтримують розширення до 11 знаків (знову ж таки, згідно Вікіпедії ). Оскільки номери розширення АТС є частиною іншого плану набору (УАТС відокремлені від обмінів телефонних компаній), номери телефонів повинні відрізнятись від телефонних номерів або з роздільним символом, або зберігаючи їх в іншому стовпчику.


5
Якщо ви не зберігаєте символи формату (наприклад, '+', '(', ')', '-' і ''), а ви зберігаєте номери різних країн, можливо, вам потрібно додати стовпець, щоб вказати формат тип номера для відображення номера.
Trisped

38
Підсумок: 15символи. Якщо зберігається префікс і суфікс, нижній рядок: 5 + 15 + 11 = 31.
АлікЕльзін-кілака

3
@MattEnright, я думаю, вам слід оновити коментар AlikElzin у своїй відповіді.
Шиммі Вайцхандлер

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
У вас дуже хороший момент. Я додав кілька рядків до свого повідомлення, будь ласка, читайте
Shimmy Weitzhandler

10
Повторний набір телефонної картки не повинен знаходитися в базі даних - це та частина, яка додається під час набору номера відповідно до правил набору. Зберігаються номери повинні бути у формі ISO, без будь-якої інформації, пов’язаної з набором номера.
TomTom
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.