Entity SQL 快速参考

本主题提供对实体 SQL 查询的快速引用。 本主题中的查询基于 AdventureWorks Sales 模型。

文本

字符串

字符串分为 Unicode 字符串和非 Unicode 字符串。 Unicode 字符串前面加上 N。例如, N'hello'.

下面是非 Unicode 字符串的示例:

'hello'
--same as
"hello"

输出:

价值
你好

DateTime

在 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

其他

实体 SQL 支持的其他文字为、Guid、二进制、浮点/双精度型、十进制和 null。 实体 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 名称 产品编号
842 Touring-Panniers, Large 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 创建对实体类型实例的引用。 例如,下面的查询返回对 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,如中所示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
二十七
二十七
26

命名空间

USING 指定查询表达式中使用的命名空间。

示例:

using SqlServer; LOWER('AA');

输出:

价值
机 管 局

寻呼

可以通过在 ORDER BY 子句中声明 SKIPLIMIT 子子句来表示分页。

示例:

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 阿格考伊里
12 Aguilar

分组

GROUPING BY 指定要放置查询 (SELECT) 表达式返回的对象的组。

示例:

SELECT VALUE name FROM AdventureWorksEntities.Product AS P
    GROUP BY P.Name HAVING MAX(P.ListPrice) > 5

输出:

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

输出:

AddressID
1
2
3
...

SELECT VALUE 和 SELECT

SELECT VALUE

实体 SQL 提供 SELECT VALUE 子句来跳过隐式行构造。 SELECT VALUE 子句中只能指定一个项。 使用此类子句时,不会围绕 SELECT 子句中的项构造行包装器,并且可以生成所需形状的集合,例如: SELECT VALUE a

示例:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p

输出:

名称
可调整比赛
All-Purpose 自行车停放架
AWC 徽标帽
...

选择

实体 SQL 还提供用于构造任意行的行构造函数。 SELECT 采用投影中的一个或多个元素,并生成包含字段的数据记录,例如: SELECT a, b, c

示例:

SELECT p.Name,p.ProductID FROM AdventureWorksEntities.Product 作为 p 输出:

名称 ProductID
可调整比赛 1
All-Purpose 自行车停放架 879
AWC 徽标帽 712
... ...

CASE 表达式

事例表达式计算一组布尔表达式以确定结果。

示例:

CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END

输出:

价值

另请参阅