1

我在用ADO.NET Data Provider for SQLite: 1.0.82.0

聚合函数返回错误结果:

###Table structure###
CREATE TABLE ta85 (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, date INTEGER, _90 REAL, _100 REAL)

###Rows: ###
select * from ta85

id, date, _90, _100

"1","1355480577920","4,4","2"

"2","1355480877929","15","5,2"

"3","1355481177937","26,4","9,4"

------------------

现在,如果我想为每列选择最大值、最小值:

SELECT date,MIN(_90), MAX(_90),MIN(_100), MAX(_100) FROM ta85 WHERE date between 1355480296794 and 1355481366266

返回:

"1355481177937","15","4,4","2","9,4" 

哪个 for column_100是正确的,但是 for column_90是错误的。

解决方案

感谢您的所有回答。你说的都是对的。

cmd.Parameters.AddWithValue(columname,"");

cmd.Parameters.AddWithValue(columname,0.0d);
4

2 回答 2

1

您使用错误的文字类型将浮点数插入数据库,并且您正在进行字符串比较。使用点而不是逗号。

请记住,SQLite 的类型非常松散

SQLite 使用更通用的动态类型系统。在 SQLite 中,值的数据类型与值本身相关联,而不是与其容器相关联。

SQL Fiddle在这里

于 2012-12-21T14:00:09.180 回答
0

看来您是在比较字符串而不是数字。也许将您的号码格式化为“4.4”而不是“4,4”

于 2012-12-21T13:56:30.213 回答