我正在使用SQLite C接口來編寫應用程序。由於我喜歡安全性,因此我正在使用預準備語句來查詢數據庫。在一個這樣的查詢中,我使用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綁定到該參數。該聲明的問題是,您不能使用OR關鍵字和MATCH關鍵字。我正在尋找一個可以與MATCH關鍵字一起使用的語句,如果沒有在「正文」列中搜索,則返回所有行。有這樣的說法嗎?
您確定此代碼有效嗎?當我將NULL綁定爲參數3時,它的行爲如所期望的那樣。當我綁定一個實際的字符串時,我得到錯誤「無法在請求的上下文中使用函數MATCH」。 – Sparafusile 2011-02-07 23:48:02