4

SQLite データベースに緯度と経度を保存する際に問題があります。(123.123999, 123.123999) のような場所を保存すると、データベースに保存されます。しかし、それを読みたい場合は、(123.124, 123.124) のように丸められた位置になります。

このSQLセグメントによって作成された私のテーブル:

CREATE TABLE locs(id INTEGER PRIMARY KEY AUTOINCREMENT, lat DOUBLE, lng DOUBLE, num INTEGER)

そしてクエリ結果:

SELECT * FROM locs WHERE lat = 123.124; //RETURN NO ROWS
SELECT * FROM locs WHERE lat = 123.123999; //RETURN 1 ROW

そのため、取得した数値を使用してデータをクエリすることはできません。

基本的なことなので、この問題を扱ったのは私が初めてではないと思います。しかし、SQLite データベースで機能する答えは見つかりませんでした。

データベースで正しい番号を読み書きするにはどうすればよいですか?

4

2 に答える 2

2

データベースで正しい番号を読み書きするにはどうすればよいですか?

1 つの迅速な解決策を提案します。

座標の eq 番号をどの形式で保存しているかを知っているので、それらを保存してTEXTから取得することTEXTに問題はありませDOUBLEん。

CREATE TABLE locs(
   id INTEGER PRIMARY KEY AUTOINCREMENT,
   lat TEXT,
   lng TEXT,
   num INTEGER
)
于 2013-04-09T22:42:42.890 に答える
0

クエリされた値の周りにイプシロンを定義する必要があります。つまり、

SELECT * FROM locs WHERE lat BETWEEN value-epsilon AND value+epsilon;

必要に応じてイプシロンを変更できます。あなたが与えた例では、 1e-3 で十分です。

もう 1 つのオプションは、値を挿入するときに値を四捨五入することですが、そうすると後で必要になる可能性のある情報が失われます。

于 2013-04-09T19:54:57.260 に答える