Entity SQL クイック リファレンス
このトピックでは、Entity SQL クエリのクイック リファレンスを提供します。 このトピックのクエリでは、AdventureWorks Sales Model が使用されています。
リテラル
String
Unicode と非 Unicode の文字列リテラルがあります。 Unicode 文字列は先頭に N が付きます。たとえば、N'hello'
のようになります。
非 Unicode 文字列リテラルの例を次に示します。
'hello'
--same as
"hello"
Output:
[値] |
---|
hello |
DateTime
DateTime リテラルでは、日付部分と時刻部分の両方が必須です。 既定値はありません。
例:
DATETIME '2006-12-25 01:01:00.000'
--same as
DATETIME '2006-12-25 01:01'
Output:
[値] |
---|
12/25/2006 1:01:00 AM |
整数型
整数リテラルには Int32 (123) 型、UInt32 (123U) 型、Int64 (123L) 型、および UInt64 (123UL) 型があります。
例:
--a collection of integers
{1, 2, 3}
Output:
[値] |
---|
1 |
2 |
3 |
その他
Entity SQL でサポートされているその他のリテラルは、Guid、Binary、Float/Double、Decimal、および 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
Output:
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)
Output:
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
Output:
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
Output:
[値] |
---|
1 |
2 |
3 |
... |
次の例では、プロパティ抽出演算子 (.) を使用して、エンティティのプロパティにアクセスします。 プロパティ抽出演算子を使用すると、参照は自動的に逆参照されます。
例:
SELECT VALUE REF(p).Name FROM
AdventureWorksEntities.Product AS p
Output:
[値] |
---|
Adjustable Race |
All-Purpose Bike Stand |
AWC Logo Cap |
... |
DEREF
DEREF では、参照値が逆参照されて、その逆参照の結果が生成されます。 たとえば、次のクエリは、SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2
のように、Orders エンティティ セットの各 Order について Order エンティティを生成します。
例:
SELECT VALUE DEREF(REF(p)).Name FROM
AdventureWorksEntities.Product AS p
Output:
[値] |
---|
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
Output:
ProductID |
---|
980 |
365 |
771 |
... |
関数
正規
正規関数の名前空間は Edm で、Edm.Length("string")
のように使用されます。 正規関数と同じ名前の関数を含んでいる別の名前空間がインポートされない限り、名前空間を指定する必要はありません。 2 つの名前空間に同じ関数が存在する場合は、ユーザーは完全な名前を指定する必要があります。
例:
SELECT Length(c. FirstName) AS NameLen FROM
AdventureWorksEntities.Contact AS c
WHERE c.ContactID BETWEEN 10 AND 12
Output:
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
Output:
EmailLen |
---|
27 |
27 |
26 |
名前空間
USING では、クエリ式で使用する名前空間を指定します。
例:
using SqlServer; LOWER('AA');
Output:
[値] |
---|
aa |
ページング
ページングは、ORDER BY 句に対して SKIP および LIMIT サブ句を宣言することによって表すことができます。
例:
SELECT c.ContactID as ID, c.LastName AS Name FROM
AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;
Output:
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
Output:
name |
---|
LL Mountain Seat Assembly |
ML Mountain Seat Assembly |
HL Mountain Seat Assembly |
... |
ナビゲーション
リレーションシップ ナビゲーション操作を使用すると、開始側のエンティティと終了側のエンティティ間のリレーションシップをナビゲートできます。 NAVIGATE では、<名前空間>.<リレーションシップ型名> として修飾されるリレーションシップ型が取得されます。 終了側のカーディナリティが 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
Output:
AddressID |
---|
1 |
2 |
3 |
... |
SELECT VALUE AND SELECT
SELECT VALUE
Entity SQL には、暗黙の行の構築をスキップする SELECT VALUE 句が用意されています。 SELECT VALUE 句には 1 つの項目のみを指定できます。 このような句を使用した場合、SELECT 句内の項目には row ラッパーは構築されず、SELECT VALUE a
などの目的の構造を持つコレクションを作成できます。
例:
SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p
Output:
名前 |
---|
Adjustable Race |
All-Purpose Bike Stand |
AWC Logo Cap |
... |
SELECT
Entity SQL には、任意の行を構築するための行コンストラクターも用意されています。 SELECT は、投影内の 1 つまたは複数の要素、および 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
Output:
[値] |
---|
true |