私はSQLite Cインターフェイスを使ってアプリケーションを作成しています。私はセキュリティが気に入っているので、準備されたステートメントを使ってデータベースに問い合わせています。このようなクエリの1つでは、MATCHキーワードを使用してフルテキスト検索を行う仮想データベースから行を選択しています。ここでは例です:SQLiteでプリペアドステートメントとフルテキスト検索を使用する
SELECT * FROM Emails
WHERE (Subject LIKE ?001 OR ?001 IS NULL)
AND (Author LIKE ?002 OR ?002 IS NULL)
AND (Body MATCH ?003 OR ?003 IS NULL)
これは、個別に、または検索を行うには、任意の組み合わせで、ユーザが任意の条件(件名、作成者、またはボディ)を入力することができます。入力されない用語は、そのパラメータにNULLをバインドします。このステートメントの問題は、MATキーワードでORキーワードを使用できないことです。本文列を検索しない場合は、MATCHキーワードを使用してすべての行を返すステートメントを探しています。そのような声明はありますか?
このコードが正しく動作することはご存知ですか?パラメータ3としてNULLをバインドすると、必要に応じて動作します。実際の文字列をバインドすると、「要求されたコンテキストで関数MATCHを使用できません」というエラーが表示されます。 – Sparafusile