Sql查询:
从test_mart中选择* where replace(替换(替换(替换(替换(替换(降低(名称),'+'),'_'),'the'),'the'),'a'),'a')='tariq “
我可以轻松解决以下查询问题,如果我必须使用简单的Sqlite ...但在当前项目中我使用的是Core Data,因此对NSPredicate不太熟悉。
该功能涉及删除所有BUT字母数字字符,这意味着删除特殊字符。
比较中应该有效的字符是
ABCDEFGHIJKLMNOPQRESTUVWXYZ1234567890
但我们不应该对以下字符的比较失败
!:;,〜`@#$%^&安培; *()_- + =“”/?.& GT;,< | \
或者以下的话
'''一个''''
一些例子:
'沃尔玛'将被视为与'沃尔玛'相同的收款人
'鞋店'将被视为与'鞋店'相同的收款人
'Domino's Pizza'将被视为与'Dominos Pizza'相同的收款人
任何人都可以建议适当的谓词/正则表达式吗?
由于
答案 0 :(得分:1)
我会在数据库中有一个额外的字段,它将是原始的处理版本,其中删除了所有不相关的字符。然后用它进行比较。
您可能希望查看可能更符合您目的的soundex算法... Soundex
答案 1 :(得分:1)
在我看来,您希望在将数据设置到核心数据存储之前对其进行规范化。因此,如果您获得“沃尔玛”,请将其标准化为“沃尔玛”一次,然后保存。那么你将不会多次进行所有这些昂贵的即时比较。
根据您的规则,规范化将非常简单: