共用方式為


Entity SQL 快速參考

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

常值

String

字串常值包括 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 (123)、UInt32 (123U)、Int64 (123L) 和 UInt64 (123UL)。

範例:

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

輸出:

1
2
3

其他

Entity SQL 支援的其他常值包括 Guid、二進位、浮點數/雙精度浮點數、十進位和 null。 Entity SQL 中的 Null 常值視為與概念模型的每一種其他型別相容。

型別建構函式

ROW

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

範例:

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

輸出:

ProductID 名稱
1 Adjustable Race
879 All-Purpose Bike Stand
712 AWC Logo Cap

MULTISET

MULTISET 會建構集合,例如:

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 名稱 ProductNumber  
842 Touring-Panniers, Large PA-T100  

Object

具名類型建構函式會建構 (具名) 使用者定義物件,例如 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) AS OrderID FROM Orders AS o

輸出:

1
2
3

以下範例使用屬性引出運算子 (.) 來存取實體的屬性。 使用屬性引出運算子時,參考會自動取值。

範例:

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

輸出:

Adjustable Race
All-Purpose Bike Stand
AWC Logo Cap

DEREF

DEREF 會對參考值取值 (Dereference),並且產生該取值的結果。 例如,以下查詢會對 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

函式

Canonical

標準函式的命名空間為 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 子句,即可表示分頁。

範例:

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

輸出:

ID 名稱
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 DEREF(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

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

範例:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

輸出:

名稱
Adjustable Race
All-Purpose Bike Stand
AWC Logo Cap

SELECT

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

範例:

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

名稱 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

另請參閱