Подтвердить что ты не робот

Почему лучше хранить номер телефона в виде строки или целого числа?

Как говорится в этом вопросе, почему лучше всего хранить телефонные номера в виде строк, а не целых чисел в столбце номер_собрания?

Не уверен, что я понимаю причину этого. Пожалуйста, помогите очистить это!

Спасибо!

4b9b3361

Ответ 1

Номера телефонов представляют собой строки символов цифр, они не являются целыми числами.

Рассмотрим, например:

  • Выражение номера телефона в другой базе сделает его бессмысленным

  • Добавление или умножение двух телефонных номеров вместе или любая математическая операция на номер телефона не имеет смысла. В результате нет другого номера телефона (кроме как по коничеству)

  • Номера телефонов предназначены для ввода "как есть" в подключенное устройство.

  • Номера телефонов могут иметь нулевые значения.

  • Манипуляции телефонными номерами, такими как добавление кода области, являются строковыми операциями.

Сохранение строковой версии номера телефона делает это ясным и однозначным.


История. В старых системах с импульсным кодированием код для каждой цифры в телефонном номере был отправлен как столько же импульсов, сколько и цифра (или 10 импульсов для "0" ). Возможно, поэтому мы по-прежнему используем цифры для обозначения частей телефонного номера. См. http://en.wikipedia.org/wiki/Pulse_dialing

Ответ 2

То, что сказал Нейл Слейтер, верен. Я бы добавил, что есть много крайних случаев, когда вы не можете последовательно выражать номер телефона как числовое значение.

Например, рассмотрим эти числа:

011-123-555-1212
+11-123-555-1212
+1 (112) 355-5121 x2

Это все потенциально допустимые номера телефонов, но они означают совсем другие вещи. Тем не менее, в целочисленной форме все они 111235551212.

Ответ 3

Рассмотрим эти номера телефонов, например

099-1234-56789 или +91-8907-687665.

В этом случае, если атрибут phone_number имеет тип integer, он не может принять эти значения. Он должен быть string для хранения этих типов значений. Таким образом, string всегда предпочтительнее чем integer

Ответ 4

Если вы собираетесь хранить номер для отображения со входа, то вы должны использовать строку.

Однако, хотя верно, что никакие математические операции не могут выполняться над числом, имеющим смысл. Использование числа в хэшсетах и ​​индексирование выполняется быстрее, чем использование строки. Поэтому при условии, что вы можете гарантировать или гомогенизировать свой набор чисел, поэтому они все согласованы, тогда вы можете увидеть более высокую производительность, действующую на число.

Например, в мире Telco заявки на рейтинги для данного клиента включают в себя много поиска в их CLI, и в этой ситуации быстрее и дешевле искать по целому. Вообще, хотя строки будут отличной производительностью, это зависит только от производительности, и у вас есть многократный поиск для огромного диапазона чисел, т.е. Рейтинг 250 миллионов звонков через 2 миллиона строк и 2000 тарифов. В рейтинге памяти также становится дорого, поэтому возможность использования 64-битного int или uint дешевле при работе с этими томами.

Ответ 5

Для этого есть несколько причин:

  • Номера телефонов часто начинаются с "0": целое число удаляет все ведущие "0" s
  • Телефон может иметь специальные char: +, (, - и т.д. (например: +33 (0) 6 12 23 34)
  • Вы не можете выполнять операции на телефонах: добавление телефонов, например, было бы бессмысленным.
  • Номер телефона может быть интернационализирован, т.е. другой формат для разных людей, поэтому невозможно с целыми числами

Могут быть и другие причины, но я думаю, что уже достаточно много таких:)