早教吧 育儿知识 作业答案 考试题库 百科 知识分享

SQLServer2008不放回抽样算法及代码写法例如:1-10中不放回抽5个数,结果会有诸如12345,13456,12456,13479,13579,这种连续5个数,连续4个数,连续3三个数,连续2个数,一个都不连续的,这些连续数字的个数

题目详情
SQL Server 2008 不放回抽样算法及代码写法
例如:1-10中不放回抽5个数,结果会有诸如12345,13456,12456,13479,13579,这种连续5个数,连续4个数,连续3三个数,连续2个数,一个都不连续的,这些连续数字的个数一并写入数据库,代码怎么写,主要是怎么用SQL Server 2008的语句来判断有几个数是连续的?
▼优质解答
答案和解析
declare @a int,@b int,@c int,@d int,@e int,@f int,@g int
set @g = 1
select @a=right(rand(),5)  --模拟随机五个数字
select @b = @a/10000, --求出万位的单个数字
       @c = (@a-@b*10000)/1000, --求出千位的单个数字
\x05   @d = (@a-@b*10000-@c*1000)/100,  --求出百位的单个数字
\x05   @e = (@a-@b*10000-@c*1000-@d*100)/10,  --求出十位的单个数字
\x05   @f = @a-@b*10000-@c*1000-@d*100-@e*10   --求出个位的单个数字
if(@f-@e=1)     --比较每个相邻的数字是否连续数字,如果是的话累计加1
\x05set @g =@g+1
if(@e-@d=1)    --比较每个相邻的数字是否连续数字,如果是的话累计加1
\x05set @g =@g+1
if(@d-@c=1)    --比较每个相邻的数字是否连续数字,如果是的话累计加1
\x05set @g =@g+1
if(@c-@b=1)    --比较每个相邻的数字是否连续数字,如果是的话累计加1
\x05set @g =@g+1
if(@b-@a=1)    --比较每个相邻的数字是否连续数字,如果是的话累计加1
\x05set @g =@g+1
if(@g=1)       --如果计数变量还是初始值1的时候,把变量清0.
    set @g = 0
print convert(varchar(10),@a) +'='+ convert(varchar(10),@b)+'+'+ convert(varchar(10),@c)+'+'+ convert(varchar(10),@d)+'+'+ convert(varchar(10),@e)+'+'+ convert(varchar(10),@f)+'一共有'+convert(varchar(10),@g)+'位连续数字'   --显示结果

--最后不知道你需要插入的目标表是什么,你只好自己插入了.
--如果帮到你的话,