比较语义 (实体 SQL)

执行以下任一实体 SQL 运算符涉及类型实例的比较:

显式比较

相等运算:

  • =

  • !=

排序作:

  • <

  • <=

  • >

  • >=

可为空性作:

  • 为空

  • 不为 NULL

显式区分

相等性区别:

  • 独特

  • 按组汇总

排序区别:

  • 排序依据

隐式区别

设置作和谓词(相等):

  • 联盟

  • 交汇

  • EXCEPT

  • SET

  • 重叠

项谓词(相等):

  • IN

支持的组合

下表显示了每种类型的比较运算符支持的所有组合:

类型 =

!=
GROUP BY

DISTINCT
UNION

INTERSECT

EXCEPT

SET

重叠
< <=

> >=
排序 IS NULL

IS NOT NULL
实体类型 Ref1 所有属性2 所有属性2 所有属性2 引发3 引发3 Ref1
复杂类型 引发3 引发3 引发3 引发3 引发3 引发3 引发3
所有属性4 所有属性4 所有属性4 引发3 引发3 所有属性4 引发3
基元类型 特定于服务提供商 特定于服务提供商 特定于服务提供商 特定于服务提供商 特定于服务提供商 特定于服务提供商 特定于服务提供商
多集 引发3 引发3 引发3 引发3 引发3 引发3 引发3
参考 5 5 5 5 Throw Throw 5
关联

类型
引发3 Throw Throw Throw 引发3 引发3 引发3

1将隐式比较给定实体类型实例的引用,如以下示例所示:

SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
     JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != p2 OR p1 IS NULL

无法将实体实例与显式引用进行比较。 如果尝试此作,则会引发异常。 例如,以下查询将引发异常:

SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
     JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != REF(p2)

阿拉伯数字复杂类型的属性在发送到商店之前被平展,因此它们变得可比(只要其所有属性都是可比的)。 另请参阅 4。

3Entity Framework 运行时会检测不受支持的情况,并引发有意义的异常,而无需与提供程序/存储相关联。

4尝试比较所有属性。 如果有一个属性属于非可比类型(如文本、ntext 或图像),则可能会引发服务器异常。

5比较引用的所有单个元素(这包括实体集名称和实体类型的所有键属性)。

另请参阅