このトピックでは、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 の Null リテラルは、概念モデルの他のすべての型と互換性があるとみなされます。
型コンストラクター
漕ぐ
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 | アジャスタブルレース |
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 | 名前 | 製品番号 | … |
---|---|---|---|
8:42 | ツーリング パニエ、大 | 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
アウトプット:
SalesOrderDetailID | 運送業者の追跡番号 | 注文数量 | 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
アウトプット:
価値 |
---|
アジャスタブルレース |
All-Purpose バイクスタンド |
AWC ロゴ キャップ |
... |
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
アウトプット:
価値 |
---|
アジャスタブルレース |
All-Purpose バイクスタンド |
AWC ロゴ キャップ |
... |
CREATEREF と KEY
CREATEREF は 、キーを渡す参照を作成します。 KEY は、型参照を使用して式のキー部分を抽出します。
例:
SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID)))
FROM AdventureWorksEntities.Product AS p
アウトプット:
ProductID |
---|
980 |
365 |
771 |
... |
機能
正規
正規関数の名前空間は、Edm.Length("string")
のように Edm です。 正規関数と同じ名前の関数を含む別の名前空間をインポートしない限り、名前空間を指定する必要はありません。 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 |
---|
二十七 |
二十七 |
26 |
名前空間
USING は、クエリ式で使用される名前空間を指定します。
例:
using SqlServer; LOWER('AA');
アウトプット:
価値 |
---|
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 | アディーナ |
11 | Agcaoili |
12 | アギュラー |
グルーピング
GROUPING BY は、クエリ (SELECT) 式によって返されるオブジェクトを配置するグループを指定します。
例:
SELECT VALUE name FROM AdventureWorksEntities.Product AS P
GROUP BY P.Name HAVING MAX(P.ListPrice) > 5
アウトプット:
名前 |
---|
LL マウンテン シート アセンブリ |
ML Mountain Seat Assembly |
HL Mountain Seat Assembly |
... |
ナビゲーション
リレーションシップ ナビゲーション演算子を使用すると、あるエンティティ(始点)から別のエンティティ(終点)へ関係を移動できます。 NAVIGATE は、 <namespace>.< として修飾されたリレーションシップの種類を受け取ります。リレーションシップの種類名>。 Navigate は、末尾のカーディナリティが 1 の場合は ref<T> を返します。 to end のカーディナリティが 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 |
... |
値を選択して選択する
値を選択
Entity SQL には、暗黙的な行の構築をスキップする SELECT VALUE 句が用意されています。 SELECT VALUE 句で指定できる項目は 1 つだけです。 このような句を使用する場合、SELECT 句内の項目を囲む行ラッパーは作成されません。目的の図形のコレクション (例: SELECT VALUE a
) を生成できます。
例:
SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p
アウトプット:
名前 |
---|
アジャスタブルレース |
All-Purpose バイクスタンド |
AWC ロゴ キャップ |
... |
選択する
Entity SQL には、任意の行を構築するための行コンストラクターも用意されています。 SELECT はプロジェクション内の 1 つ以上の要素を受け取り、フィールドを含むデータ レコードになります (例: SELECT a, b, c
)。
例:
SELECT p.Name、p.ProductID FROM AdventureWorksEntities.Product as p Output:
名前 | ProductID |
---|---|
アジャスタブルレース | 1 |
All-Purpose バイクスタンド | 879 |
AWC ロゴ キャップ | 712 |
... | ... |
CASE 式
case 式は、一連のブール式を評価して結果を決定します。
例:
CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END
アウトプット:
価値 |
---|
真実 |