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


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

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

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

Alex_Ustinovя вижу что в CHAR заключительные пробелы НЕ хранятся, а VARCHAR хранится ВСЕВообще-то с точностью до наоборот. В CHAR хранятся, а в VARCHAR отрезаются.
...
Рейтинг: 0 / 0
05.06.2015, 10:14:10
    #38977070
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаляется "ведущий ноль" в поле типа int
AkinaVARCHAR отрезаются.Точнее, не добавляются.
...
Рейтинг: 0 / 0
05.06.2015, 10:51:10
    #38977122
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаляется "ведущий ноль" в поле типа int
[b]miksoft [/b], да, сорри.
...
Рейтинг: 0 / 0
05.06.2015, 10:58:27
    #38977132
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаляется "ведущий ноль" в поле типа int
Вот нашел себе задачу... не хотел возиться в консоли - полез в 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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / удаляется "ведущий ноль" в поле типа int / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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