为啥我的子查询谓词中的 LIKE[c] 与此名称不匹配?

Posted

技术标签:

【中文标题】为啥我的子查询谓词中的 LIKE[c] 与此名称不匹配?【英文标题】:Why does the LIKE[c] in my subquery predicate not match this name?为什么我的子查询谓词中的 LIKE[c] 与此名称不匹配? 【发布时间】:2010-06-19 17:51:01 【问题描述】:

我有两个实体:Department 和 DepartmentInfo。每个部门都有一个或多个 DepartmentInfo 对象。在 DepartmentInfo 中,有一个 departmentName 属性。

我想获取所有具有特定部门名称的部门对象。所以我为 Department 实体创建了一个 NSFetchRequest,并使用了这个获取请求:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(departmentName, $s, $s.departmentName LIKE[c] %@).@count > 0", @"Marketing"];

它有效,但是:LIKE[c] 无效!我必须与确切的部门名称相匹配。如果我这样做,我将无法匹配:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(departmentName, $s, $s.departmentName LIKE[c] %@).@count > 0", @"Mar"];

这里有什么问题?

【问题讨论】:

使用@"Mar*" 你会匹配 【参考方案1】:

由于 Jason Coco 没有将此作为答案发布,我就这样做了:

使用@"Mar*" 你会匹配

【讨论】:

【参考方案2】:

这里不需要使用SUBQUERY。您可以使用以下方法获得相同的结果:

ANY departmentInfo.departmentName LIKE[c] 'Mar*'

对一组Department 对象执行该操作,它会起作用。

【讨论】:

以上是关于为啥我的子查询谓词中的 LIKE[c] 与此名称不匹配?的主要内容,如果未能解决你的问题,请参考以下文章

BIGQUERY:连接谓词中的表不受支持的子查询

改进 sql 中的文本搜索

使用 like 谓词(模式匹配)对 DB2 Z/oS 的 SQL 查询进行性能调优

数据库系统原理作业七数据查询中的嵌套查询

Prolog 中的子列表谓词

为啥以下查询不适用于双 LIKE 子句?