SQL Server(1):例题 1、编写一段程序:输出1-1000之间的质数,并保存到一个新的质数表(序号, 质数)中。 create table 质数表(序号 int identity(1,1),质数 int) declare @i int, @j int, @flag bit -- @i外循环变量, @j内循环变量, @flag表示是否质数的旗标
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
posted on