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" 

どちらの列_100は正しいですが、列_90は間違っています。

解決

ご回答ありがとうございます。あなたは両方とも正しかった。

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

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

2 に答える 2

1

浮動小数点数をデータベースに挿入するために間違った種類のリテラルを使用しており、文字列の比較が行われています。カンマの代わりにドットを使用してください。

SQLite は型に関して非常に緩いことに注意してください。

SQLite は、より一般的な動的型システムを使用します。SQLite では、値のデータ型はコンテナではなく、値自体に関連付けられます。

ここでSQLフィドル。

于 2012-12-21T14:00:09.180 に答える
0

数値ではなく文字列を比較しているようです。おそらく、番号を「4,4」ではなく「4.4」にフォーマットします

于 2012-12-21T13:56:30.213 に答える