Entity SQL中存在许多集合类型的数据,因此,集合操作在Entity SQL中也比较重要。本文介绍Entity SQL中常用的集合运算符。
阅读本文前注意,首先约定,这里的集合可以包含重复元素,而非我们平时所说的不包含重复元素的集合。
- SET
语法:Set(Colleciton)
说明:我们假定Collection中可以包含重复元素,那么,Set(Collection)就取出Collection中的非重复的元素。
例如:Set({1,1,3,3,4})将得到结果{1,3,4}。
在Entity SQL中,实体和行是可以比较的。当然,作为用户,大家不必去关心到底怎么比——对于实体,主键相同则为相同实体;对于行,则要求结构一致;而集合是不可以进行比较的,换句话说:set({{1,2,3},{1,2,3}})是非法的。
- IN
语法:e IN collection
说明:IN运算符返回e是否在collection中。
例如:1 IN {1,2,3}返回TRUE,1 IN {-1,-2,-3}返回FALSE。
- EXISTS
语法:EXISTS(collection)
说明:判定collection是否为空,为空时返回FALSE,否则,返回TRUE。
例如:EXISTS({1})返回TRUE;而EXISTS(SELECT V from {1,2,3} AS V WHERE V=-1)返回FALSE。
- UNION
语法:collectionA UNION [ALL] collection
说明:UNION求两个集合的并集,并且去除相同的元素;而UNION ALL求两个集合并集,但是,同时包含重复元素。
例如:{1,2,3} UNION {2,3,4}得到 {1,2,3,4},而{1,2,3} UNION ALL {2,3,4} 得到{1,2,3,2,3,4}。
- INTERSECT
语法:collecitonA INTERSECT collectionB
说明:INTERSECT求两个集合的交集。
例如:{1,2,3} INTERSECT {2,3}得到{2,3}。注意,交集会去除重复元素。{1,2,2,3} INTERSECT {2,2,3}得到{2,3},而非{2,2,3}
- EXCEPT
语法:collecitonA EXCEPT collecitonB
说明:A EXCEPT B代表:从A集合里减去B集合的元素。换句话说,就是取得A中有B中没有的元素。
例如:{1,2,3} EXCEPT {2,3}将得到{1}。
- OVERLAPS
语法:collecitonA OVERLAPS collectionB
说明:A OVERLAPS B将判定A、B集合是否有交集,有则返回TRUE,没有则返回FALSE。其相当于EXISTS(A INTERSECT B)。
例如:{1,2,3} OVERLAPS {3,4} 返回TRUE,而{1,2,3} OVERLAPS {4,5} 返回FALSE。
- ANYELEMENT
语法:ANYELEMENT(collection)
说明:ANYELEMENT随机返回集合中的任意一个元素。
例如:ANYELEMENT({1,2,3})有可能返回1,有可能返回2也有可能返回3。
转自:http://www.cnblogs.com/xiaomi7732/archive/2008/10/13/1310354.html