powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / удаляется "ведущий ноль" в поле типа int
17 сообщений из 17, страница 1 из 1
удаляется "ведущий ноль" в поле типа int
    #38976572
katovat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите, как сделать так, чтобы mysql не удалял "ведущий ноль"?
Пример:
Есть таблица: my_table. В ней есть столбец ACCOUNT_NUMBER (bigint(19)). Я вставляю в этот столбец значение 069001143470.
При выполнении следующего запроса:
Код: sql
1.
select ACCOUNT_NUMBER from my_table;


получаю следующий результат:
69001143470
Как видно потерялся первый ноль, а для меня очень важно его сохранить. В виду того, что размерность данного поля коллеблится от 10 до 19 использование zerofill для этих целей не подходит.
Прошу помощи, как обойти данную особенность.
Еще на данном поле навешан BTREE индекс.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38976623
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katovatКак видно потерялся первый ноль, а для меня очень важно его сохранить.А нехрен строковые по сути данные хранить в чисельных полях.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38976649
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katovatПодскажите, как сделать так, чтобы mysql не удалял "ведущий ноль"?Используйте строковые поля.
Числовые поля не сохраняют ведущие нули. Точнее, сохраняют ровно столько ведущих двоичных нулей (или единиц в случае отрицательных чисел), сколько нужно для заполнения всего поля. Но при форматировании числа в строковый вид обычно ведущие нули обрезаются.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38976652
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё видела дополнительно длину хранят
но это лишняя морока имхо
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38976668
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В варчаре нет необходимости хранить длину. Просто надо тримать строку перед внесением в таблицу.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38976669
katovat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, благодарю за ответ. Скрипт поправил
Еще вопрос: в данной таблице на поле ACCOUNT_NUMBER (которое теперь уже будет char(19)) еще одно поле имеющее тип smallint(3) создается соcтавной btree индекс. Это корректно (в данном случае вопрос о том будет ли этот индекс вообще работать)?
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38976670
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чего ему не работать, если он подходит для использования в запросе?
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38976675
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katovatchar(19)Лучше varchar, а то еще и лишние пробелы хранить придется.
katovatЕще вопрос: в данной таблице на поле ACCOUNT_NUMBER (которое теперь уже будет char(19)) еще одно поле имеющее тип smallint(3) создается соcтавной btree индекс. Это корректно (в данном случае вопрос о том будет ли этот индекс вообще работать)?Не понял. Что такое "на поле еще одно поле" ?
А индекс будет или не будет использоваться в зависимости от массы причин. В первую очередь от того, как написаны запросы.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38976680
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

в смысле длину номера, штобы его потом дополнить
говорюж изврат
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38976688
katovat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо. Выводы сделал.
Составной индекс действительно работает.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38977008
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftkatovatchar(19)Лучше varchar, а то еще и лишние пробелы хранить придется.
вот это не понятно, есть различия в хранении пробелов или какая-то существенная разница при поиске и т.д.?
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38977019
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovесть различия в хранении пробелов
Есть. В CHAR они хранятся, а в VARCHAR нет.

Alex_Ustinovили какая-то существенная разница при поиске
Нет. Заключительные пробелы в значении поля при поиске игнорируются.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38977042
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, я в курсе, что "ПРОВЕРКА" в CHAR(20) будет храниться как "________ПРОВЕРКА" а в VARCHAR(20) будет храниться как "ПРОВЕРКА" но никаких проблем с этим не ощущаю, LIKE "ПРО%" работает одинаково.
Когда-то в VFoxPro надо было тащить LTRIM(field) и в VARCHAR() чтобы увидеть на клиенте "ПРОВЕРКА" без ведущих пробелов (там своя кухня в DB)
И я вижу что в CHAR заключительные пробелы НЕ хранятся, а VARCHAR хранится ВСЕ
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38977060
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov"ПРОВЕРКА" в CHAR(20) будет храниться как "________ПРОВЕРКА"
Вообще-то с точностью до наоборот. CHAR - left justified.

Alex_Ustinovя вижу что в CHAR заключительные пробелы НЕ хранятся, а VARCHAR хранится ВСЕВообще-то с точностью до наоборот. В CHAR хранятся, а в VARCHAR отрезаются.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38977070
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaVARCHAR отрезаются.Точнее, не добавляются.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38977122
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[b]miksoft [/b], да, сорри.
...
Рейтинг: 0 / 0
удаляется "ведущий ноль" в поле типа int
    #38977132
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот нашел себе задачу... не хотел возиться в консоли - полез в dbForge
Странное дело, в дамп, как при работе в консоли, выгрузилось все как надо - VARCHAR "обрезанный" LTRIM, CHAR с RTRIM
в dbForge поля выводятся как я их и редактировал "____Проверка" И !!! "_____Проффессионал____"
что и вызвало смущение........ причем при сохранении CHAR с завершающими пробелами ошибку сохранения....
Вот такой прикол.
дамп
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE test.test (
  id int(14) NOT NULL AUTO_INCREMENT,
  parent varchar(50) DEFAULT '0',
  weight int(14) NOT NULL,
  txtchar char(20) DEFAULT NULL,
  PRIMARY KEY (id)
)

INSERT INTO test.test(id, parent, weight, txtchar) VALUES
(1, '   example   ', 1, '    Проверка');
INSERT INTO test.test(id, parent, weight, txtchar) VALUES
(2, 'we ', 2, 'Профессионал');

...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / удаляется "ведущий ноль" в поле типа int
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]