SQL面试题总结

--SQL SERVER中的函数递归;
--按1,1,2,3,5,8,13...等算出第30个出现的数字;
IF EXISTS(SELECT * FROM SYSOBJECTS WHERE id = OBJECT_ID(N'P','FN'))
	BEGIN
		DROP FUNCTION P;
	END
GO

CREATE FUNCTION P
(
	@i INT
)
RETURNS INT
AS 
	BEGIN
		DECLARE @RETURN INT;
	
		IF @i = 0
			BEGIN
				SET @RETURN = 0;
			END
		ELSE IF @i = 1
			BEGIN
				SET @RETURN = 1;
			END
		ELSE
			BEGIN
				SET @RETURN = dbo.P(@i - 1) + dbo.P(@i - 2);
			END
		
		RETURN @RETURN;
	END
GO
SELECT dbo.P(30);
GO

--查找31行到40行的数据
SELECT * FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY number ASC) AS id FROM dbo.spt_values) A WHERE id BETWEEN 31 AND 40;
posted @ 2011-02-15 22:49  -Xu-Zhao-  阅读(442)  评论(0编辑  收藏  举报