看板 C_and_CPP 關於我們 聯絡資訊
我的開發平台是 win7 工具是QT Creator 版本是Qt Core 5.15.2 在寫一些存取Sqlite資料庫的程式碰到了兩個問題。 1.當要查詢的字當中包含sql語法保留字的時候: QString keyword; QString queryString{"SELECT * FROM exfts WHERE nameEN match ?"}; query.prepare(queryString); query.addBindValue(keyword); 當keyword是sql語法的保留字,例如:AND, OR等等,querry會失敗 想請問QT有相對應函式可以解決嗎? 還是只能自己判斷如果要搜的關鍵字是保留字的時候 querryString要自己變成 QString queryString{"SELECT * FROM exfts WHERE nameEN match " + "'"+ keyword +"';"}; 2.第二個問題就是在使用全文檢索FTS的時候 match + 萬用字元* 跟 一般普通的sql語法 like + 萬用字元% 兩者似乎有什麼不一樣 如果我想要找有包含「水果」兩個字的欄位 使用 like '%水果%'搜尋 那不管是 1.好吃的水果 2.好吃 水果真的很好吃 3.好吃 水果 真的很好吃 3.好吃-水果-真的很好吃 都可以撈出來 但如果是match '水果' 只有3會被撈出來 如果使用match '*水果*' 有時候可以被撈出來 也有可能不會被撈出來 因為這是之前碰到的問題現在才來問 所以當時的資料庫資料以及下的關鍵字我一時舉例不上來 我下班之後如果有找到例子會再補上 目前只確定使用match '關鍵字'的時候 兩旁有用空白切開來的欄位才會被撈出來,例如上述的3 其他包含在一句沒斷開的句子裡則不會撈出來 用萬用字元擺前或擺後也沒有正確撈出 想請問是我完全搞錯FTS的萬用字元*的用法 還是是因為非英語的文字分割字詞的關係? 又或是其他原因呢? 感謝閱讀 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.225.144 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1637310986.A.771.html ※ 編輯: liu2007 (123.192.225.144 臺灣), 11/19/2021 16:37:59