sqlite: математическая операция не возвращает числовое значение, даже если ячейка является РЕАЛЬНОЙ - PullRequest
0 голосов
/ 03 июля 2018

У меня есть table с тремя столбцами: traffic INTEGER, revtraffic INTEGER, ratio REAL.

Когда я обновляю столбец отношения следующим образом:

UPDATE table
SET ratio = revtraffic/traffic

Возвращает 0.0 во всех ячейках. Однако, если напишите:

SET ratio = revtraffic*100/traffic 

тогда он показывает правильные результаты, но, очевидно, в 100 раз больше. Что здесь происходит?

1 Ответ

0 голосов
/ 03 июля 2018

revtraffic и traffic являются целыми числами, поэтому их деление будет выполнено с помощью целочисленного деления , которое возвращает только «целую» часть деления (то есть, часть слева от десятичная точка). Этот результат затем повышается до real, когда вы присваиваете ему real.

Вы можете обойти эту проблему, явно приведя один из аргументов к real:

UPDATE table SET ratio = (CAST revtraffic AS REAL)/traffic
...