Что не так с этим запросом MySQL?(Пытаюсь повторно добавить начальные 0 к почтовым индексам)

StackOverflow https://stackoverflow.com//questions/9677124

  •  12-12-2019
  •  | 
  •  

Вопрос

У меня есть таблица почтовых индексов, и многие поля в ней потеряли ведущие нули во время импорта.У меня есть запрос, который должен повторно добавить нули слева, и я запустил этот запрос без ошибок, однако он говорит, что были затронуты 0 строк:

UPDATE `Zip Codes` SET Code = right(concat("00000",Code), 5) WHERE length(Code) < 5;

Кто-нибудь может увидеть, в чем может быть проблема?

Это было полезно?

Решение

Почтовые индексы, как и номера телефонов, всегда следует хранить в виде VARCHAR нет INT.

Почему?

Они не являются целыми числами и не представляют собой фактические числа.На самом деле вы их не сортируете, не увеличиваете и не суммируете, они не представляют собой какое-то количество, они представляют собой просто коды и теоретически могут содержать любые символы, включая буквы и знаки препинания.

Если бы они были целыми числами, то 00123 будет означать точно то же самое, что и 123.

Например, ознакомьтесь с Страница Википедии о форматах почтовых индексов, существует множество разновидностей формата и длины.Даже в США есть расширения, благодаря которым они будут превышать те 5 цифр, которые вы выделили.

VARCHAR(32) должно быть адекватным.

Другие советы

Какая ошибка это производит?

SELECT right(concat("00000",Code), 5) FROM `Zip Codes` WHERE length(Code) < 5;
.

что в основном то, что обновление пытается сделать.

Щелкните правой кнопкой мыши номер или столбец и нажмите «Форматировать ячейки» -> Special -> Zip-коды.В других случаях, когда вы хотите ведущие нули, вы могли бы сделать «Форматировать ячейки» -> Custom.Оттуда есть многочисленные варианты вы можете выбрать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top