Преобразование результата выражения в SQLite из числа с плавающей точкой в ​​десятичное - PullRequest
2 голосов
/ 22 января 2011

У меня есть следующее выражение для запроса, который я выполняю к базе данных SQLite, используя SQLite.NET.

SUM(Detail.Qty * Products.Weight) AS MovedWeight

Запрос работает, но так как Detail.Qty является десятичным, а Weight также десятичным, он возвращает число с плавающей запятой. Я пытаюсь привести его к чему-то вроде DECIMAL (10,2). Я знаю, что SQLite особенный для типов данных, и я пытался использовать CAST без успеха.

CAST(SUM(Detail.Qty * Products.Weight) AS DECIMAL(10,2)) AS MovedWeight

Это тоже работает, но не обращает внимания на точность (10,2) и дает мне тот же результат, что и в первом примере.

У кого-нибудь есть идеи? Преобразование результата в десятичное в DataTable также было бы приемлемо, но я понятия не имею, как это сделать без уродливого, ресурсоемкого цикла (ожидается, что запрос в какой-то момент выдаст 3000 или более результатов).

Ответы [ 2 ]

4 голосов
/ 22 января 2011

В SQLite числа в скобках после имени типа ничего не делают ;они просто разрешены для совместимости с другими базами данных.VARCHAR(100) означает не что иное, как «сходство текста», а DECIMAL(10, 2) означает не более, чем «сходство чисел».

1 голос
/ 18 сентября 2015

Функция ROUND () делает свое дело.

ROUND(SUM(Detail.Qty * Products.Weight), 2) AS MovedWeight
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...