共用方式為


Entity SQL 快速參考

本主題提供 實體 SQL 查詢的快速參考。本主題的範例是以 AdventureWorks Sales Model 為基礎。

常值

字串

字串常值包括 Unicode 和非 Unicode 字元兩種。非 Unicode 字串前面會加一個 N。例如 N'hello'

以下是 Unicode 字串常值的範例:

'hello'
--same as
"hello"

輸出:

hello

DateTime

在 DateTime 常值中,日期和時間兩者都是必要項。沒有預設值。

範例:

DATETIME '2006-12-25 01:01:00.000' 
--same as
DATETIME '2006-12-25 01:01'

輸出:

12/25/2006 1:01:00 AM

整數

整數常值可以是 Int32 或 Int64 型別。

範例:

--a collection of integers
{1, 2, 3}

輸出:

1

2

3

其他

實體 SQL 支援的其他常值包括 Guid、二進位、浮點數/雙精度浮點數、十進位和 null。實體 SQL 中的 Null 常值視同與 Entity Data Model (EDM) 中的每一種其他型別相容。

型別建構函式

ROW

ROW (Entity SQL) 會建構匿名、結構式型別 (記錄) 值,例如:ROW(1 AS myNumber, ‘Name’ AS myName).

範例:

SELECT VALUE row (product.ProductID as ProductID, product.Name 
    as ProductName) FROM AdventureWorksEntities.Product AS product

輸出:

ProductID Name

1

Adjustable Race

879

All-Purpose Bike Stand

712

AWC Logo Cap

...

...

MULTISET

MULTISET (Entity SQL) 會建構集合,例如:

MULTISET(1,2,2,3)``--same as-{1,2,2,3}.

範例:

SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300)

輸出:

ProductID Name ProductNumber

842

Touring-Panniers, Large

PA-T100

Object

具名型別建構函式 (Entity SQL) 會建構 (具名) 使用者定義物件,例如 person("abc", 12)

範例:

SELECT VALUE AdventureWorksModel.SalesOrderDetail (o.SalesOrderDetailID, o.CarrierTrackingNumber, o.OrderQty, 
o.ProductID, o.SpecialOfferID, o.UnitPrice, o.UnitPriceDiscount, 
o.rowguid, o.ModifiedDate) FROM AdventureWorksEntities.SalesOrderDetail 
AS o

輸出:

SalesOrderDetailID CarrierTrackingNumber OrderQty ProductID

1

4911-403C-98

1

776

2

4911-403C-98

3

777

...

...

...

...

參考

REF

REF 會建立實體類型執行個體的參考。例如,以下查詢會傳回 Orders 實體集中每一個 Order 實體的參考:select ref(o) from LOB.Orders as o。以下範例如用屬性引出運算子 (.)來存取實體的屬性。使用屬性引出運算子時,參考會自動取值。

範例:

SELECT VALUE REF(p).Name FROM 
    AdventureWorksEntities.Product as p

輸出:

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

DEREF

DEREF 會對參考值取值並且產生該取值的結果。例如,以下查詢會對 Orders 實體集中的每一個 Order 產生 Order 實體:select deref(o2.r) from (select ref(o) as r from LOB.Orders as o) as o2

範例:

SELECT VALUE DEREF(REF(p)).Name FROM 
    AdventureWorksEntities.Product as p

輸出:

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

CREATEREF 和 KEY

CREATEREF 會建立傳遞索引鍵的參考。KEY 會擷取具有型別參考之運算式的索引鍵部分。

範例:

SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID))) 
    FROM AdventureWorksEntities.Product as p

輸出:

ProductID

980

365

771

...

函式

標準

標準函式的命名空間為 Edm,例如 Edm.Length("string")。除非匯入了另一個命名空間其中包含與標準函式同名的函式,否則不需要指定命名空間。如果兩個命名空間有相同的函式,使用者就應當指定完整名稱。

範例:

SELECT Length(c. FirstName) As NameLen FROM 
    AdventureWorksEntities.Contact AS c 
    WHERE c.ContactID BETWEEN 10 AND 12

輸出:

NameLen

6

6

5

Microsoft 提供者專用

Microsoft 提供者專用函式是在 SqlServer 命名空間中。

範例:

SELECT SqlServer.LEN(c.EmailAddress) As EmailLen FROM 
    AdventureWorksEntities.Contact AS c WHERE 
    c.ContactID BETWEEN 10 AND 12

輸出:

EmailLen

27

27

26

命名空間

USING 會指定查詢運算式中使用的命名空間。

範例:

using SqlServer; LOWER('AA');

輸出:

aa

分頁

分頁可以利用宣告 SKIPLIMIT 次子句到 ORDER BY (Entity SQL) 子句的方式表示。

範例:

SELECT c.ContactID as ID, c.LastName as Name FROM 
    AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;

輸出:

ID Name

10

Adina

11

Agcaoili

12

Aguilar

群組

GROUPING BY 指定要放置查詢 (SELECT) 運算式所傳回物件的群組。

範例:

SELECT VALUE name FROM AdventureWorksEntities.Product as P 
    GROUP BY P.Name HAVING MAX(P.ListPrice) > 5

輸出:

name

LL Mountain Seat Assembly

ML Mountain Seat Assembly

HL Mountain Seat Assembly

...

巡覽

關聯性巡覽運算子可以讓您在關聯性上從一個實體 (開始端) 巡覽到另一個實體 (結束端)。NAVIGATE 接受限定為 <namespace>.<relationship type name> 的關聯性型別。如果結束端的基數為 1,巡覽會傳回 Ref<T>。如果結束端的基數為 n,便會傳回 Collection<Ref<T>>。

範例:

SELECT a.AddressID, (SELECT VALUE EREF(v) FROM 
    NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v) 
    FROM AdventureWorksEntities.Address AS a

輸出:

AddressID

1

2

3

...

SELECT VALUE 和 SELECT

SELECT VALUE

實體 SQL 提供 SELECT VALUE 子句來略過隱含資料列建構。SELECT VALUE 子句中可指定一個項目。使用這類子句時,將不會建構包含 SELECT 子句中這個項目的資料列包裝函式,並且可以產生所需形狀的集合,例如:SELECT VALUE a

範例:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product as p

輸出:

Name

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

SELECT

實體 SQL 也提供資料列建構函式來建構任意資料列。SELECT 會擷取投影中的一或多個項目,並且產生具有欄位的資料記錄,例如:SELECT a, b, c

範例:

SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p Output:

Name ProductID

Adjustable Race

1

All-Purpose Bike Stand

879

AWC Logo Cap

712

...

...

CASE 運算式

CASE 運算式會評估一組布林運算式來判斷結果。

範例:

CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END

輸出:

TRUE

另請參閱

概念

Entity SQL 參考
Entity SQL 概觀