[英]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.