FTS5テーブルを使用してSQLite3データベースの(価格)範囲を検索するにはどうすればよいですか?FTS5とMATCHの間でレコードを見つける方法?
これは強く簡単な例テーブルである:私は価格のキュウリを検索することができますどのように
SELECT * FROM fruits WHERE fruits MATCH 'name:Cucumber AND (price:20 OR price:40)';
:
はCREATE VIRTUAL TABLE fruits USING fts5 (id, name, price);
INSERT INTO fruits (id,name,price) VALUES (1, 'Apple with A', 5);
INSERT INTO fruits (id,name,price) VALUES (2, 'Pineapple with B', 10);
INSERT INTO fruits (id,name,price) VALUES (3, 'Cucumber with C', 20);
INSERT INTO fruits (id,name,price) VALUES (4, 'Melon with D', 25);
INSERT INTO fruits (id,name,price) VALUES (5, 'Kiwi with E', 30);
INSERT INTO fruits (id,name,price) VALUES (6, 'Cucumber with F', 35);
INSERT INTO fruits (id,name,price) VALUES (7, 'Cucumber with G', 40);
次のコマンドは、キュウリのために期待される二つのレコード3と7を返します。範囲20〜40(上記の例ではレコード6を含む)?私は
SELECT * FROM fruits WHERE fruits MATCH 'name:Cucumber AND (price: BETWEEN 20 AND 40)';
または
SELECT * FROM fruits WHERE fruits MATCH 'name:Cucumber AND (price: BETWEEN 19 AND 41)';
でそれをしようとした場合、私はまったく結果(またはエラーメッセージ)を取得しません。 MATCHとBETWEENを1つのクエリで使用することはできませんか?
しかも: なぜコマンドが
SELECT * FROM fruits WHERE fruits MATCH 'name:C';
ないリターン1つのレコードのみ(ID:3)ではない3、図6、図7、 'キュウリ' でCを想定が発見されますあまりにも、Cの「C」だけでなく?