Entity SQL クイック リファレンス

このトピックでは、Entity SQL クエリのクイック リファレンスを提供します。このトピックのクエリでは、AdventureWorks Sales Model が使用されています。

リテラル

String

Unicode と非 Unicode の文字列リテラルがあります。非 Unicode 文字列は、N'hello' のように、先頭に N が付きます。

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

Integer

Integer リテラルには、Int32 型と Int64 型があります。

例 :

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

出力 :

1

2

3

その他

Entity SQL でサポートされているその他のリテラルは、Guid、Binary、Float/Double、Decimal、および null です。Entity 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 は、エンティティ型のインスタンスへの参照を作成します。たとえば、次のクエリは、select ref(o) from LOB.Orders as o のように、Orders エンティティ セットの各 Order エンティティへの参照を返します。次の例では、プロパティ抽出演算子 (.) を使用して、エンティティのプロパティにアクセスします。プロパティ抽出演算子を使用すると、参照は自動的に逆参照されます。

例 :

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

出力 :

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

出力 :

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") のように使用されます。正規関数と同じ名前の関数を含んでいる別の名前空間がインポートされない限り、名前空間を指定する必要はありません。2 つの名前空間に同じ関数が存在する場合は、完全な名前を指定する必要があります。

例 :

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

ページング

ページングは、SKIP および LIMIT サブ句を 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 は、<名前空間>.<リレーションシップの種類の名前> という形式で修飾されたリレーションシップの種類を取得します。終了側の基数が 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 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

出力 :

Name

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:

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 の概要