2011-02-08 12 views
2

私はSQLiteのクローム(HTML5)でテーブルを作成しました:すべての結果を取得するにはどのように列は、sqliteでゼロより大きい?

transaction.executeSql(
      'CREATE TABLE IF NOT EXISTS record('+ 
      'id INTEGER NOT NULL PRIMARY KEY,'+ 
      'fkindicatorspeciesid INTEGER NOT NULL REFERENCES indicatorspecies(indicatorspeciesid),'+ 
      'latitude INTEGER NOT NULL,'+ 
      'longitude INTEGER NOT NULL,'+ 
      'time TEXT NOT NULL,'+ 
      '`when` TEXT NOT NULL,'+ 
      'numberseen INTEGER NOT NULL,'+ 
      'notes TEXT NOT NULL,'+ 
      'online_recordid INTEGER,'+ 
      'status TEXT,'+ 
      'locationid INTEGER REFERENCES location(locationid),'+ 
      'surveyid INTEGER REFERENCES survey(id));', 
      [], nullHandler,errorHandler); 

その後、私はそれにいくつかのデータを追加します。 enter image description here

今、私は「online_recordid」が大きいすべてのレコードを取得しようゼロ:

select * from record where online_recordid > 0; 

'online_recordid'列に何もないので、私の記録を取り戻すべきではありません。問題は私が記録を取り戻すことです!

答えて

0

これは私が最終的に解決した方法です。

select * from record where online_recordid <> '' and online_recordid > 0; 
0

ただ、nullがonline_recordidでないことを確認してください:

select * from record where online_recordid > 0 and online_recordid is not null 

しかし、行動は奇妙です。私はあなたと同じ質問をしてみましたが、レコードが返ってきません。たぶん私はあなたと違う何かをしました。

+0

私はあなたのラインを試しましたが、online_recordidを持っていないレコードが戻ってきました。おそらく、何かがcyberkiwiによって説明されたように起こったと思う。 – Timo

1

SQLite uses a more general dynamic type system.

あなたはそれが "INTEGER" と定義されていてものIF 、online_recordidに(空の文字列) 'ストア' を有効にすることができます。これはType Affinityにのみ影響し、従来のRDBMSとは異なり、データを制限するものではありません。

本当に起こったのは、実際に保存したいものがNULLだったときに、 ''をonline_recordidに挿入している可能性があることです。

クエリonline_recordid > 0が発生すると、空白は>0になる[何か]に変換されます。

関連する問題