65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL Server 2005 的 APPLY 操作符

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.40/5 (6投票s)

2007 年 5 月 4 日

CPOL

1分钟阅读

viewsIcon

41129

APPLY 运算符是 SQL Server 2005 中的一项新功能,用于查询的 FROM 子句中。它允许您为外部表的每一行调用一个返回 TABLE 的函数。我们可以将外部表的列作为函数参数传递。

引言

APPLY 运算符是 SQL Server 2005 中的一项新功能,而 TOP 在 SQL 2005 中也有一些新的增强。我们将在本文中讨论这两个运算符。

APPLY 运算符

APPLY 运算符是 SQL Server 2005 中的一项新功能,用于查询的 FROM 子句中。它允许您为外部 TABLE 的每一行调用一个返回 TABLE 的函数。我们可以将外部表的列作为函数参数传递。

它有两个选项:

  1. CROSS APPLY,和
  2. OUTER APPLY

如果函数表没有与外部表行对应的行,CROSS APPLY 将不会返回外部表的行,而 OUTER APPLY 将返回 NULL 值代替函数列。

以下查询返回与 cust.CustomerID 匹配的 customer 表的所有记录。要执行以下代码,您需要拥有包含一些数据的以下两个数据库表。

CREATE TABLE Customer(CustomerID INT, CustName VARCHAR(max))

CREATE TABLE Orders(OrderID int IDENTITY(1,1) NOT NULL,CustomerID int,_
	SalesPersonID int,OrderDate datetime,Amount int)

Using the Code

--Function returning an OUTER query result in a table
CREATE FUNCTION fnGetCustomerInfo (@custid int)
RETURNS TABLE
AS
RETURN
(
--Outer Query
SELECT * 
FROM Orders 
WHERE customerid=@custid
) 


--Use APPLY
SELECT * FROM Customer cust
CROSS APPLY
fnGetCustomerInfo(cust.CustomerID)
ORDER BY cust.CustName

TOP 运算符

在 SQL 2005 中,TOP 用于将返回的行数限制为数字或百分比,在 SELECTUPDATEDELETE INSERT 语句中。 以前,这只能通过 SELECT 查询实现。此增强功能取代了 SET ROW COUNT ,后者存在性能问题。

语法:TOP <literal> 或 <expression> [PERCENT]

注意:literal 选项的表达式应为 bigint 类型,expression 选项的表达式应为 float 类型。

SELECT TOP 10 * FROM Orders

SELECT TOP (SELECT count(*) FROM Customer) * FROM Orders

DECLARE @NOROWS AS FLOAT
SET @NOROWS = 70
SELECT TOP (@NOROWS) PERCENT * FROM Orders

关注点

有关 SQL Server 的更多文章,请访问 www.geocities.com/ProgrammersVision

历史

  • 2007 年 5 月 4 日:初始发布
© . All rights reserved.