2011-01-21 2 views
2

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

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

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

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

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

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

+2

Извините, это был глупый вопрос. Я наконец-то вспомнил (нашел в документах) функцию ROUND(). Это решило мою проблему. – Diego

ответ

1

Функция ROUND() делает трюк.

ROUND(SUM(Detail.Qty * Products.Weight), 2) AS MovedWeight 
4

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

+2

Спасибо за разъяснение. Для других пользователей: ответ на первый комментарий. – Diego

Смежные вопросы