簡體   English   中英

需要調整我的FTS4 SQLite查詢

[英]Need to tweak my FTS4 SQLite query

以下查詢在Android上不起作用,並引發以下異常

Unable to use function MATCH in the requested context

這是一個非常復雜的查詢,因此我正在研究簡化它的方法。 有關信息,此查詢可使用sqlite-jdbc-3.715驅動程序在我的計算機上的同一數據庫上sqlite-jdbc-3.715

SELECT * FROM stop_times WHERE 
    departure_time  >= 1000-125
    AND 
    departure_time <= 1000+180 
    AND stop_id IN 
        (SELECT _id FROM stop_sequences WHERE stop_ids MATCH '"642," OR "642," OR ",642"')
    AND _id IN 
        (SELECT _id FROM trips WHERE service_id IN (SELECT _id FROM calendar WHERE wednesday=1))
ORDER BY departure_time ASC

我認為我的FTS表聲明還可以:

CREATE VIRTUAL TABLE stop_sequences USING fts4(
    _id INTEGER PRIMARY KEY,
    stop_ids TEXT
);

SQL專家可以幫助我嗎? 謝謝

編輯:我發現,即使是最簡單的查詢,如

SELECT _id FROM stop_sequences WHERE stop_ids MATCH '"642";

失敗並出現相同的錯誤。 我已經在代碼中其他地方的另一個數據庫上使用了MATCH語句,它一點也不抱怨。 錯誤消息中提到的上下文是否與Android的Context

創建此表時,您指定了USING fts4() ,對嗎? 如果沒有,您的全文查詢將根本無法進行。

您可以嘗試使用聯合更改查詢

SELECT * FROM stop_times WHERE 
    departure_time  >= 1000-125
    AND 
    departure_time <= 1000+180 
    AND stop_id IN 
        (SELECT _id FROM stop_sequences 
         WHERE stop_ids 
         MATCH '"642,"'
         UNION
         SELECT _id FROM stop_sequences 
         WHERE stop_ids 
         MATCH '",642"'
         )
    AND _id IN 
        (SELECT _id FROM trips WHERE service_id IN (SELECT _id FROM calendar WHERE wednesday=1))
ORDER BY departure_time ASC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM