Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как вместо 1 вывести 000001 / 21 сообщений из 21, страница 1 из 1
20.04.2008, 18:23
    #35267105
sanich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
Как средствами мускуля добавить нужное количество нулей перед чиловым полем, чтобы в итоге

из значений

1
10
100
1000

получилось

000001
000010
000100
001000

Это возможно средствами Mysql???
...
Рейтинг: 0 / 0
21.04.2008, 05:08
    #35267459
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
Конвертировать число в строку и дополнить строку слева нулями до нужной длины.
Все делается встроенными SQL-функциями самого MySQL.
...
Рейтинг: 0 / 0
21.04.2008, 06:49
    #35267475
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
Хотя на клиенте, скорей всего, будет проще. printf и всех делов.
...
Рейтинг: 0 / 0
21.04.2008, 12:12
    #35268060
alexenin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
RIGHT(CONCAT('0000000',`NUMBER`),6)
но лучше делать на клиенте
...
Рейтинг: 0 / 0
21.04.2008, 22:29
    #35269864
xelaok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
Что-то атрибут колонки ZEROFILL никто не вспомнил. Вроде как то что надо автору. :)
...
Рейтинг: 0 / 0
21.04.2008, 22:39
    #35269876
TheLion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
Автор давно забыл про свой вопрос...
-------------------------------------------------------
Жить будем плохо. Но недолго...
...
Рейтинг: 0 / 0
21.04.2008, 22:55
    #35269897
sanich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
TheLionАвтор давно забыл про свой вопрос...
-------------------------------------------------------
Жить будем плохо. Но недолго...

нет не забыл!
...
Рейтинг: 0 / 0
21.04.2008, 22:56
    #35269898
sanich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
xelaokЧто-то атрибут колонки ZEROFILL никто не вспомнил. Вроде как то что надо автору. :)

Про ZEROFILL знаю, но мне этот вариант не подходит
...
Рейтинг: 0 / 0
21.04.2008, 22:59
    #35269902
sanich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
alexeninRIGHT(CONCAT('0000000',`NUMBER`),6)
но лучше делать на клиенте

А как лучше все таки на клиенте обрабатывать на php или mysql все таки

По идее фетч в пхп каждой строки+обработка (добавление нулей) будет дольше чем в mysql



Как считаете????
...
Рейтинг: 0 / 0
21.04.2008, 23:28
    #35269927
TheLion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
sanichнет не забыл!
Это радует.
1.Про то, что клиент у вас на PHP, слышу впервые (ну может читал невнимательно...)
2.Быстрее и лучше - вещи разные.
3.Конечную обработку принципиально лучше делать на клиенте. Ведь клиент получает данные с сервера, а пироженое в глазури из них делать - как раз и предназначение клиента.
-------------------------------------------------------
Жить будем плохо. Но недолго...
...
Рейтинг: 0 / 0
22.04.2008, 00:16
    #35269956
sanich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
TheLion sanichнет не забыл!
Это радует.
1.Про то, что клиент у вас на PHP, слышу впервые (ну может читал невнимательно...)
2.Быстрее и лучше - вещи разные.
3.Конечную обработку принципиально лучше делать на клиенте. Ведь клиент получает данные с сервера, а пироженое в глазури из них делать - как раз и предназначение клиента.
-------------------------------------------------------
Жить будем плохо. Но недолго...

нет, меня интересует только скорость работы, как быстрее??
...
Рейтинг: 0 / 0
22.04.2008, 11:02
    #35270539
Nick Anikin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
sanichА как лучше все таки на клиенте обрабатывать на php или mysql все таки

По идее фетч в пхп каждой строки+обработка (добавление нулей) будет дольше чем в mysqlА если нули добавлять в mysql, то фетчить не надо уже что ли каждую строку??
Само добавление нулей все равно где делать в плане скорости, если разница в скорости и будет, то несущественная по сравнению с другими затратами, не забивайте голову ерундой. Правильнее делать на клиенте, как уже сказали.
...
Рейтинг: 0 / 0
22.04.2008, 11:24
    #35270629
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
нуу… если добавлять нули на сервере, больше данных по сети качать придётся :)
...
Рейтинг: 0 / 0
22.04.2008, 11:25
    #35270631
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
так что быстрее на клиенте.
...
Рейтинг: 0 / 0
22.04.2008, 13:08
    #35271064
alexenin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
Дополнение нулей делается очень часто для правильной сортировки чисел хранимых в символьном виде.
Сортировка готовых данных осуществляется быстрее (индекс на поле), чем преобразование, а потом сортировка.
Если заполнение нулями осуществляется на клиенте (php), то есть возможность сделать настраиваемый уровень заполнения (можно следать и на MySQL через ХП или ХФ), при этом необходимо заранее продумать ширину полей.
...
Рейтинг: 0 / 0
22.04.2008, 13:15
    #35271097
Nick Anikin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
а зачем хранить числа в символьном виде? особенно, когда их еще и сортировать надо
...
Рейтинг: 0 / 0
22.04.2008, 21:42
    #35272574
TheLion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
sanichнет, меня интересует только скорость работы, как быстрее??
По идее должно быть быстрее на клиенте. Но в вашем случае разница если и будет, то, видимо, небольшая (см. предыдущих авторов, (+1))
Вопрос тут в другом: если вас сегодня интересует только скорость запроса, то завтра вы вполне можете столкнуться с тем, что все быстрые запросы почему-то стали работать медленно...
-------------------------------------------------------
Жить будем плохо. Но недолго...
...
Рейтинг: 0 / 0
23.04.2008, 13:33
    #35274045
alexenin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
Nick Anikinа зачем хранить числа в символьном виде? особенно, когда их еще и сортировать надо
Полгода назад появилась необходимость добавить суффикс (0000001-34), при этом изменение произошло только в коде.
Думал добавление поля будет быстрым, но после 40 минут пришлось прервать выполнение, т.к. кончился обед. В таблице всего ~ 1 700 000 записей было.
...
Рейтинг: 0 / 0
23.04.2008, 14:15
    #35274233
Nick Anikin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
что вы называете "добавлением поля"?
...
Рейтинг: 0 / 0
23.04.2008, 16:54
    #35274968
alexenin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
Nick Anikinчто вы называете "добавлением поля"?
Да, мои руки не успели за мыслями...
Первое решение было добавить поле для суффикса в той же таблице, но после неудачной попытки просто обновил поле номера документа приписав в конце нужный суффикс. Запрос выполнился за 15 минут.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.02.2017, 11:40
    #39409826
Rombl4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вместо 1 вывести 000001
Дополнить любыми символами слева до нужного размера строки
Код: sql
1.
2.
3.
4.
SELECT
LPAD(t.num,6,'0')
FROM
table t
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как вместо 1 вывести 000001 / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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