本主題提供 Entity SQL 查詢的快速參考。 本主題中的查詢是以 AdventureWorks Sales 模型為基礎。
字面意義
繩子
有 Unicode 和非 Unicode 字元字串字面值。 Unicode 字串前面會加上 N。例如, N'hello'
。
以下是非 Unicode 字串字面值的範例:
'hello'
--same as
"hello"
輸出:
價值觀 |
---|
你好 |
日期時間
在 DateTime 常值中,日期和時間部分都是強制性的。 沒有預設值。
範例:
DATETIME '2006-12-25 01:01:00.000'
--same as
DATETIME '2006-12-25 01:01'
輸出:
價值觀 |
---|
2006/12/25 上午 1:01:00 |
整數
整數常值的類型可以是 Int32 (123)、UInt32(123U)、Int64 (123L)和 UInt64 (123UL)。
範例:
--a collection of integers
{1, 2, 3}
輸出:
價值觀 |
---|
1 |
2 |
3 |
其他
Entity SQL 支援的其他常值是 Guid、Binary、Float/Double、Decimal 和 null
。 Entity SQL 中的空值會被視為與概念模型中所有其他類型相容。
類型建構函式
排
ROW 會建構匿名的結構化型別 (record) 值,如下列所示: 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 | 可調整比賽 |
879 | All-Purpose 自行車站 |
712 | AWC 標誌帽子 |
... | ... |
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 | 名稱 | 產品編號 | … |
---|---|---|---|
842 | 旅行包, 大型 | PA-T100 | … |
物體
具名型別建構函式 用來建構(具名的)使用者定義物件,例如 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
輸出:
銷售訂單詳細ID | 運輸追蹤號碼 | 訂單數量 | ProductID | ... |
---|---|---|---|---|
1 | 4911-403C-98 | 1 | 776 | ... |
2 | 4911-403C-98 | 3 | 777 | ... |
... | ... | ... | ... | ... |
參考資料
裁判
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
輸出:
價值觀 |
---|
可調整比賽 |
All-Purpose 自行車站 |
AWC 標誌帽子 |
... |
DEREF
DEREF 解除引用一個引用值,並產生解引用的結果。 例如,下列查詢會產生 Orders 實體集中的每個訂單所對應的 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
輸出:
價值觀 |
---|
可調整比賽 |
All-Purpose 自行車站 |
AWC 標誌帽子 |
... |
CREATEREF 和 KEY
CREATEREF 會建立傳遞金鑰的參考。 KEY 會擷取型別參考表達式中的關鍵部分。
範例:
SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID)))
FROM AdventureWorksEntities.Product AS p
輸出:
ProductID |
---|
980 |
三百六十五 |
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 Provider-Specific
Microsoft 提供者特定的函式 位於 SqlServer
命名空間中。
範例:
SELECT SqlServer.LEN(c.EmailAddress) AS EmailLen FROM
AdventureWorksEntities.Contact AS c WHERE
c.ContactID BETWEEN 10 AND 12
輸出:
EmailLen |
---|
二十七 |
二十七 |
26 |
命名空間
USING 指定查詢表示式中使用的命名空間。
範例:
using SqlServer; LOWER('AA');
輸出:
價值觀 |
---|
機 管 局 |
尋呼
將 SKIP 和 LIMIT 子句宣告為 ORDER BY 子句,即可表示分頁。
範例:
SELECT c.ContactID as ID, c.LastName AS Name FROM
AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;
輸出:
身份證 | 名稱 |
---|---|
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
輸出:
名稱 |
---|
LL 山地車座組件 |
ML 山地座椅組裝件 |
HL 山地車座組裝 |
... |
導航
關聯性瀏覽運算子可讓您從某個實體(從結尾)巡覽至另一個實體(到結尾) 之間的關聯性。 NAVIGATE 會採用限定為 <命名空間>的關聯性類型。<關聯性類型名稱>。 如果目標端的基數為 1,Navigate 會傳回 Ref<T> 。 如果終點的基數是 n,則會傳回集合<Ref<T>> 。
範例:
SELECT a.AddressID, (SELECT VALUE DEREF(v) FROM
NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v)
FROM AdventureWorksEntities.Address AS a
輸出:
地址ID |
---|
1 |
2 |
3 |
... |
選取值並選取
選擇值
Entity SQL 提供 SELECT VALUE 子句來略過隱含數據列建構。 SELECT VALUE 子句中只能選擇一個項目。 使用這類子句時,SELECT 子句中的物件不會被資料列包覆,且可以產生所需形狀的集合,例如:SELECT VALUE a
。
範例:
SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p
輸出:
名稱 |
---|
可調整比賽 |
All-Purpose 自行車站 |
AWC 標誌帽子 |
... |
選擇
Entity SQL 也提供數據列建構函式來建構任意數據列。 SELECT 會採用投影中的一或多個元素,併產生具有字段的數據記錄,例如: SELECT a, b, c
。
範例:
選擇 p.Name; p.ProductID 從 AdventureWorksEntities.Product 作為 p 輸出:
名稱 | ProductID |
---|---|
可調整比賽 | 1 |
All-Purpose 自行車站 | 879 |
AWC 標誌帽子 | 712 |
... | ... |
狀況表達式
案例表達式會評估一組布爾表達式來判斷結果。
範例:
CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END
輸出:
價值觀 |
---|
是真的 |