Share via


比較語意 (Entity SQL)

執行以下任何 Entity SQL 運算子都會牽涉到型別執行個體的比較:

明確比較

相等運算:

  • =

  • !=

排序作業:

  • <

  • <=

  • >

  • >=

可為 Null 的運算:

  • IS NULL

  • IS NOT NULL

明確區分

相等區分:

  • DISTINCT

  • GROUP BY

排序區分:

  • ORDER BY

隱含區分

Set 作業和述詞 (相等):

  • UNION

  • INTERSECT

  • EXCEPT

  • SET

  • OVERLAPS

Item 述詞 (相等):

  • IN

支援的組合

下表針對每一種型別顯示比較運算子的所有支援組合:

Type

=

!=

GROUP BY

DISTINCT

UNION

INTERSECT

EXCEPT

SET

OVERLAPS

IN

< <=

> >=

ORDER BY

IS NULL

IS NOT NULL

實體類型

參考1

所有屬性2

所有屬性2

所有屬性2

擲回3

擲回3

參考1

複雜類型

擲回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

擲回

擲回

是5

關聯

型別

擲回3

擲回

擲回

擲回

擲回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)

2複雜類型的屬性會先簡維,然後再送到存放區,以便可加以比較 (只要其所有屬性都可以比較即可)。請參閱 4。

3Entity Framework 執行階段會偵測到不支援的案例,並擲回有意義的例外狀況,而不會佔用提供者/存放區。

4嘗試比較所有的屬性。如果某個屬性具有無法比較的型別 (如文字、ntext 或影像),可能會擲回伺服器例外狀況。

5參考的所有個別項目都會比較 (這包括實體集名稱及實體類型的所有 Key 屬性)。

另請參閱

概念

Entity SQL 概觀