0

以下のクエリは Android では機能せず、次の例外がスローされます

Unable to use function MATCH in the requested context

これはかなり複雑なクエリなので、単純化する方法を検討しています。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.

4

2 に答える 2

0

ユニオンでクエリを変更してみることができます

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
于 2013-05-06T15:31:57.137 に答える