2011-01-24 71 views
0

SQL查詢:問題,同時使用NSPredicate

SELECT * FROM test_mart 其中替換(更換(更換(更換(更換(替換(低級(名稱), '+'), '_'), '''','''),'a'),'a')='tariq'

我可以非常容易地觸發以下查詢,如果我只需要使用Sqlite ......但是在當前項目我正在使用Core Data,因此對NSPredicate不太瞭解。

該功能提示刪除所有BUT字母數字字符,這意味着要刪除特殊字符。

,應該是在比較有效的字符可

ABCDEFGHIJKLMNOPQRESTUVWXYZ1234567890

但是,我們不應該失敗的下列字符

比較:;!,〜`@#$%^ & *()_- + =「」/?>,< | \

或者爲下列詞語

「的」「一個」「A」

一些例子:

  1. 「沃爾瑪」會被視爲是相同的收款人爲「沃爾瑪」

  2. 「鞋店」將被視爲相同的收款人爲「鞋店」

  3. 「達美樂比薩」將被視爲相同的收款人爲「達美樂披薩」

  4. 「測試收款人;」將被視爲相同的收款人爲「測試收款人」

任何一個能提出適當的謂詞/正則表達式?

感謝

回答

1

我會在數據庫中的一個額外的字段這將是原來剝去了所有不相關的字符的處理的版本,然後利用它來進行比較。

你可能想看看同音算法可以適合你的目的比較好... Soundex

1

在我看來,您希望在將數據放入核心數據存儲之前對數據進行規範化。因此,如果您獲得「沃爾瑪」,將其標準化爲「沃爾瑪」一次,然後保存。那麼你不會多次做這些昂貴的即時比較。

正常化將是相當簡單的,因爲你的規則:

  • 地帶詞語 「一」, 「一個」 和 「該」
  • 刪除標點