2009-09-30 92 views
1

我有一個數據庫,其中包含一些重音字符,我必須儘快做一個不區分重音的搜索。 我試過兩種解決方法:Sqlite3變音不敏感搜索iphone

  • 查詢所有可能的重音組合。例如: PERCHE PERCHE PERCHE PERCHE PERCHE PERCHE PERCHE PERCHE PERCHE

  • 重寫LIKE操作,其中i第一與它們各自的正常替換所有重音字符,然後做一個比較如常。

第一個顯然太貴,但第二個不夠好。

有沒有我失蹤的解決方案?

感謝 馬爾科

回答

0

一些粥的做法。全部取決於你可以在你的數據庫上做什麼。

  • 在插入時或在某些預處理請求中刪除數據庫中的所有重音。
  • 定義了一個sqlite操作符,用於在比較之前從字段中刪除重音。
+0

我無法修改數據庫中的數據。 LIKE操作符替換符合您的建議,在比較之前刪除重音符號。 – Marco 2009-10-01 10:14:46

+0

你能設置重音刪除結果的索引嗎?如果可能的話,你應該有很大的性能提升。 – kriss 2009-10-01 19:46:43

+1

我在我以前的評論中忽略了一個細節:like運算符是否像名稱所示(即:like(accented,unaccented))本身執行非重疊比較?如果是這樣,那就不是我所建議的。如果更多地考慮一個不存在的操作符並使用通用的SQL比較運算符。兩者之間的區別在於,一個不明的參數可以被索引,而不是具有兩個參數的相似形式。 – kriss 2009-10-02 08:44:42