SQLite Как обрабатывать отрицательные числа с отрицательным знаком в конце - PullRequest
0 голосов
/ 02 ноября 2018

Мы никогда не испытывали этого раньше. Мы импортируем TXT-файлы с разделителями табуляции, которые содержат числовые столбцы. Отрицательные числа имеют индикатор позади числа, а не впереди (например, 550,00 - вместо -550,00).

Мы используем SQLite Expert Professional. При просмотре результатов импорта в таблице любое число с отрицательным знаком сзади было преобразовано в отрицательный знак спереди, но все эти ячейки выделены синим цветом (мы не уверены, почему SQLite Expert делает это, но предполагаем, что имеет значение). Кроме того, при запросе и суммировании они игнорируются, в результате чего результирующее значение оказывается больше ожидаемого.

Типы полей: FLOAT и DECIMAL

Мы гуглили и не можем найти никаких результатов о местоположении отрицательного знака.

Цените любую помощь, как справиться с этим.

1 Ответ

0 голосов
/ 02 ноября 2018

Запрос UPDATE может изменить значения, вычитая неправильное значение из 0 после замены отрицательного знака ничем.

ОБНОВЛЕНИЕ может быть основано на: -

UPDATE vneg SET iv = (0 - replace(iv,'-','')) WHERE instr(iv,'-') > 1;

например. : -

DROP TABLE IF EXISTS vneg;
CREATE TABLE IF NOT EXISTS vneg (iv);
INSERT INTO vneg VALUES ('100.35'),('133.44-'),('25.453-');
SELECT * FROM vneg; -- First Result (before)
UPDATE vneg SET iv = (0 - replace(iv,'-','')) WHERE instr(iv,'-') > 1;
SELECT * FROM vneg; -- Second result (after)

До обновления: -

enter image description here

После обновления: -

enter image description here

А затем использование SELECT sum(iv) AS summed FROM vneg; приводит к: -

-58,543

...