powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Дробные числа!
21 сообщений из 21, страница 1 из 1
Дробные числа!
    #39659892
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, недавно начал изучать mysql, столкнулся с проблемой - при выводе таблицы дробные числа отображаются как целые, делал вроде все правильно, рылся в инете, так и не смог понять. Помогите пожалуйста.


create database cookie;
use cookie

create table cookie_sales
(
ID int not null auto_increment,
first_name varchar(20) default null,
sales dec(4.2) default null,
sale_date DATE,
primary key(ID)
);

insert into cookie_sales
(first_name, sales, sale_date)
values
('Линдси',32.02, '2007-3-6'),('Пэрис',26.53, '2007-3-6'),
('Бритни',11.25, '2007-3-6'),('Николь',18.96, '2007-3-6'),
('Линдси',9.16, '2007-3-7'),('Пэрис',1.52, '2007-3-7'),
('Бритни',43.21, '2007-3-7'),('Николь',8.05, '2007-3-7'),
('Линдси',17.62, '2007-3-8'),('Пэрис',24.19, '2007-3-8'),
('Бритни',3.40, '2007-3-8'),('Николь',15.21, '2007-3-8'),
('Линдси',0, '2007-3-9'),('Пэрис',31.99, '2007-3-9'),
('Бритни',2.58, '2007-3-9'),('Николь',0, '2007-3-9'),
('Линдси',2.34, '2007-3-10'),('Пэрис',13.44, '2007-3-10'),
('Бритни',8.78, '2007-3-10'),('Николь',26.82, '2007-3-10'),
('Линдси',3.71, '2007-3-11'),('Пэрис',0.56, '2007-3-11'),
('Бритни',34.19, '2007-3-11'),('Николь',7.77, '2007-3-11'),
('Линдси',16.23, '2007-3-12'),('Пэрис',0, '2007-3-12'),
('Бритни',4.50, '2007-3-12'),('Николь',19.22, '2007-3-12');
...
Рейтинг: 0 / 0
Дробные числа!
    #39659895
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да еще и округляет, заметил после публикации сообщения!
...
Рейтинг: 0 / 0
Дробные числа!
    #39659898
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermama,

посмотрите в show create table на свою табличку.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
mysql> create temporary table foo (val dec(4.2));
Query OK, 0 rows affected (0.04 sec)

mysql> show create table foo;
+-------+---------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                            |
+-------+---------------------------------------------------------------------------------------------------------+
| foo   | CREATE TEMPORARY TABLE `foo` (
  `val` decimal(4,0) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> 



Хотя если это пример из какой-то книги, то наверное просто не видно. dec(4.2) и dec(4,2) - две очень большие разницы.
И да, это странный mysql, который пытается поломать добавляемые данные вместо сообщения об ошибке. Поэтому я аже не удивлён, что нет даже варнинга от попытки объвить decimal с дробным числом целых.
...
Рейтинг: 0 / 0
Дробные числа!
    #39659900
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я перебирал разные варианты и подумал может быть стоит изменить dec на decimal хотя это одно и тоже, да это пример из книги, скорее всего косяк в запятой от невнимательности, сейчас проверю.

alter table cookie_sales
change column sales sales decimal (4.2);

опять же тут точка, вопрос, почему тогда mysql это пропускает, ща переделаю.
...
Рейтинг: 0 / 0
Дробные числа!
    #39659902
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
заменил на запятую, но особо не помогло)))
...
Рейтинг: 0 / 0
Дробные числа!
    #39659903
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это я пытался скопировать таблицу из книги, чтобы задания поделать, исходного кода там нет, поэтому я сам все делал
...
Рейтинг: 0 / 0
Дробные числа!
    #39659905
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати пробовал менять на DOUBLE - та же история , просто целые числа.
...
Рейтинг: 0 / 0
Дробные числа!
    #39659906
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

у меня немного по-другому показывает
...
Рейтинг: 0 / 0
Дробные числа!
    #39659928
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с чего оно поможет то, если вы просто alter table колонке сделали
значения как были целыми, так и остались
дропайте таблицу
...
Рейтинг: 0 / 0
Дробные числа!
    #39659941
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это изменит тип значений после ALTER
Код: sql
1.
UPDATE cookie_sales SET sales=sales
...
Рейтинг: 0 / 0
Дробные числа!
    #39660503
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tip78с чего оно поможет то, если вы просто alter table колонке сделали
значения как были целыми, так и остались
дропайте таблицу



Дропнул таблицу, все помогло, большое спасибо
Но почему когда я менял запятую в команде alter table с помощью метода change, при повторном возврате таблицы числа остались целыми? метод change для того и создан был чтобы менять тип данных, а вы говорите, что я просто alter table сделал, я сделал его как раз для того чтобы изменить их) но старнно, они же ведь и были не целыми так как я ставил DEC с плавающей точкой, да еще и точку в скобках сам mysql пропустил...спасибо зза внимание
...
Рейтинг: 0 / 0
Дробные числа!
    #39660504
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dermamatip78с чего оно поможет то, если вы просто alter table колонке сделали
значения как были целыми, так и остались
дропайте таблицу



Дропнул таблицу, все помогло, большое спасибо
Но почему когда я менял запятую в команде alter table с помощью метода change, при повторном возврате таблицы числа остались целыми? метод change для того и создан был чтобы менять тип данных, а вы говорите, что я просто alter table сделал, я сделал его как раз для того чтобы изменить их) но старнно, они же ведь и были не целыми так как я ставил DEC с плавающей точкой, да еще и точку в скобках сам mysql пропустил...спасибо зза внимание



все понял, с помощью change меняют тип данныз например с int на dec и т.д. а я же поменял только точку на запятую... Выходит если бы я так накосячил на таблице с 10к строками и в этих строках не было бы ни одного значения с плав. точкой, а потом на 10001ой я решил бы его добавить и понял что не могу этого сдлелать, то все, таблице кирдык??????
...
Рейтинг: 0 / 0
Дробные числа!
    #39660541
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас в колонке были ЦЕЛЫЕ числа, поскольку вы её создали для ЦЕЛЫХ чисел
dec(4.2) - це ЦЕЛОЕ, а dec(4,2) - це дробное
и после того как вы его переделали в дробное через alter table, оно лишь получило .00, т.к. у этого числа никогда не было дробной части и оно понятия не имеет, какие там цифры
...
Рейтинг: 0 / 0
Дробные числа!
    #39660543
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и есессно, если вы дробную колонку переделаете на целое, дробную часть потеряется навсегда
...
Рейтинг: 0 / 0
Дробные числа!
    #39660545
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tip78у вас в колонке были ЦЕЛЫЕ числа, поскольку вы её создали для ЦЕЛЫХ чисел
dec(4.2) - це ЦЕЛОЕ, а dec(4,2) - це дробное
и после того как вы его переделали в дробное через alter table, оно лишь получило .00, т.к. у этого числа никогда не было дробной части и оно понятия не имеет, какие там цифры

Сейас запутался немного, в книге не помню чтобы так объясняли, то есть как я понимаю если я ставлю тип DEC, то в моем понимании я уже говорю муsql , что в этой колонке будут целые числа с плавающей точкой, но только в том случае, если я укажу ',' в скобках, а если я в скобках указываю '.', то язык воспринимает числа как int что ли???? блин, тогда почему бы ему не написать Error или что то типа того))))
...
Рейтинг: 0 / 0
Дробные числа!
    #39660547
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.00, т.к. у этого числа никогда не было дробной части и оно понятия не имеет, какие там цифры[/quot]


тоже не совсем понимаю, я же в insert into четко указал, что у меня там дробные числа.....почему после замены на запятую, он не берет те значения, котрые я вносил в insert into??
...
Рейтинг: 0 / 0
Дробные числа!
    #39660548
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamaтоже не совсем понимаю, я же в insert into четко указал, что у меня там дробные числа.....почему после замены на запятую, он не берет те значения, котрые я вносил в insert into??А покажите полный и точный текст вашего INSERT-а.
...
Рейтинг: 0 / 0
Дробные числа!
    #39660549
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftdermamaтоже не совсем понимаю, я же в insert into четко указал, что у меня там дробные числа.....почему после замены на запятую, он не берет те значения, котрые я вносил в insert into??А покажите полный и точный текст вашего INSERT-а.


Да, конечно,


insert into cookie_sales
(first_name, sales, sale_date)
values
('Линдси',32.02, '2007-3-6'),('Пэрис',26.53, '2007-3-6'),
('Бритни',11.25, '2007-3-6'),('Николь',18.96, '2007-3-6'),
('Линдси',9.16, '2007-3-7'),('Пэрис',1.52, '2007-3-7'),
('Бритни',43.21, '2007-3-7'),('Николь',8.05, '2007-3-7'),
('Линдси',17.62, '2007-3-8'),('Пэрис',24.19, '2007-3-8'),
('Бритни',3.40, '2007-3-8'),('Николь',15.21, '2007-3-8'),
('Линдси',0, '2007-3-9'),('Пэрис',31.99, '2007-3-9'),
('Бритни',2.58, '2007-3-9'),('Николь',0, '2007-3-9'),
('Линдси',2.34, '2007-3-10'),('Пэрис',13.44, '2007-3-10'),
('Бритни',8.78, '2007-3-10'),('Николь',26.82, '2007-3-10'),
('Линдси',3.71, '2007-3-11'),('Пэрис',0.56, '2007-3-11'),
('Бритни',34.19, '2007-3-11'),('Николь',7.77, '2007-3-11'),
('Линдси',16.23, '2007-3-12'),('Пэрис',0, '2007-3-12'),
('Бритни',4.50, '2007-3-12'),('Николь',19.22, '2007-3-12');
...
Рейтинг: 0 / 0
Дробные числа!
    #39660550
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот теперь после select * from
...
Рейтинг: 0 / 0
Дробные числа!
    #39660765
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamaя же в insert into четко указал, что у меня там дробные числа.....почему после замены на запятую, он не берет те значения, котрые я вносил в insert into??
Если ты положил в холодильник половину слона, поскольку целый туда не влез, будешь ты ожидать достать из него целого слона после расширения дверки?..
...
Рейтинг: 0 / 0
Дробные числа!
    #39660805
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamaСейас запутался немного, в книге не помню чтобы так объясняли, то есть как я понимаю если я ставлю тип DEC, то в моем понимании я уже говорю муsql , что в этой колонке будут целые числа с плавающей точкой, но только в том случае, если я укажу ',' в скобках, а если я в скобках указываю '.', то язык воспринимает числа как int что ли???? блин, тогда почему бы ему не написать Error или что то типа того))))

авторMySQL, будучи недостаточно строгой СУБД, задорно игнорирует ваши настройки и ограничения целостности (она просто хочет помочь);
она легко вставит пустую строку "" в колонку с запретом на добавление пустых значений;
она с радостью вставит бесполезные даты (вроде 0000-00-00) в колонки с датами при запрете добавления пустых значений;
она умеет делить на ноль и вернёт NULL при вычислении 1/0;
она вернёт NULL при делении строки на ноль;
если вы попробуете вставить значение 1000 в колонку с длиной равной двум, то она просто немного округлит это значение до 99.

Всё это должно дать вам повод задуматься об использовании MySQL: эта система не проверяет ваши данные, зато она пытается показаться «удобной» ценой целостности данных.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Дробные числа!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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