SQL Server(1):例题

2014-11-24 13:24:01 · 作者: · 浏览: 0
SQL Server(1):例题
1、编写一段程序:输出1-1000之间的质数,并保存到一个新的质数表(序号, 质数)中。
create table 质数表(序号 int identity(1,1),质数 int)
declare @i int, @j int, @flag bit    -- @i外循环变量, @j内循环变量, @flag表示是否质数的旗标
set @i=2
while @i<=1000     -- 从2到1000,检查数字看是否指数
begin
set @flag=1
set @j=2
while @j<=SQRT(@i)      -- 从2到平方根,看是否整除
begin
if @i%@j=0
begin
set @flag=0
break        --  ①不是质数就可以退出内循环了
end
set @j=@j+1
end
if @flag=1
insert into 质数表(质数) values(@i)
set @i=@i+1
end        -- ②注意缩进和对齐!!!比如每个循环的begin, end。
2、编写一个函数:要求反置一段文本后,单词首字母大写输出。例如输入 I am Frank。输出Knarf Ma I。
create function 反置文本(@string varchar(5000)) returns varchar(5000) -- 参数和返回类型 as begin declare @i int, @flag bit -- @flag是大小写旗标 declare @reverse varchar(5000), @result varchar(5000) set @i=1 -- 第一次循环,先实现反置,结果保存到@reverse set @reverse='' while(@i<=LEN(@String)) begin set @reverse=SubString(@string, @i,1)+@reverse set @i=@i+1 end set @i=1 -- 第二次循环,再实现首字母大小写,结果保存到@result set @flag = 1 set @result='' while(@i<=LEN(@reverse)) begin if @flag = 1 set @result=@result + Upper(SubString(@reverse, @i,1)) else set @result=@result + Lower(SubString(@reverse, @i,1)) if SubString(@reverse, @i,1) in (' ', '.') set @flag = 1 else set @flag = 0 set @i=@i+1 end return(@result) end