0

Android では、次のようなクエリを使用したいと思います。

SELECT docid FROM docs WHERE docs MATCH '("sqlite database" OR "sqlite library") AND linux'

http://www.sqlite.org/fts3.html#section_3

問題は、「不正な一致式エラー」が発生したことです。より基本的な一致クエリを実行すると機能しますが、問題は括弧が原因である可能性があります。

まったく同じステートメント (テーブルと列名を除く) を使用すると、エラーは同じです。

完全なエラー メッセージ:

sqlite が返されました: エラー コード = 1、msg = ステートメントは 7 で中止されます: 
[SELECT * FROM namedays WHERE names MATCH '("sqlite database" OR "sqlite library") AND linux';]
不正な形式の MATCH 式: [("sqlite database" OR "sqlite ライブラリ") AND linux], db=/data/data/org.xyz/databases/data

何か案が?

4

1 に答える 1

4

SQLITE_ENABLE_FTS3_PARENTHESIS オプションを指定して SQLite をコンパイルしていないと思います。そのため、拡張クエリ構文ではなく、標準クエリ構文のみを使用できます。

compile_optionsこれは、プラグマを実行することで簡単に確認できます。たとえば、私の sqlite3 には拡張された構文がないことがわかります。

sqlite> PRAGMA compile_options;
DISABLE_DIRSYNC
ENABLE_COLUMN_METADATA
ENABLE_FTS3
ENABLE_RTREE
ENABLE_UNLOCK_NOTIFY
SECURE_DELETE
TEMP_STORE=1
THREADSAFE=1
于 2012-07-29T13:10:49.920 に答える