早教吧作业答案频道 -->其他-->
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的语句来判断有几个数是连续的?
例如: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)+'位连续数字' --显示结果
--最后不知道你需要插入的目标表是什么,你只好自己插入了.
--如果帮到你的话,
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)+'位连续数字' --显示结果
--最后不知道你需要插入的目标表是什么,你只好自己插入了.
--如果帮到你的话,
看了 SQLServer2008不...的网友还看了以下:
等差数列的第n个数怎么求?比如13579这样的最好把每个字母代表的意思写出来, 2020-05-20 …
有一个五位数,它的各个数位上的数字只能用13579这五个数字且不重复,并使它快明天交啊是125的倍 2020-05-23 …
1)已知一个自然数与199的乘积的末尾是13579,这个数至少是———.加讲解 2020-06-11 …
13579这五个数按要求组成五位数最接近2万的数是大于5万的最小的数是小于5万的数是十万7千9百千 2020-06-11 …
∫e^(-x)=?我知道[-e^(-x)]这个的导数是e^(-x)所以∫e^(-x)=-e^(-x 2020-06-12 …
从13579这5个数字中取2个数字,从0246中取2个数字1:能组成多少个没有重复的4位数?2:能 2020-07-14 …
用13579这五个数完成练习选出四个数组成是三的倍数最大的四位数()选出四个数组成是三的倍数最小的 2020-07-16 …
13579这些都是奇数,那么1.53.55.57.5算不算奇数 2020-07-17 …
SQLServer2008不放回抽样算法及代码写法例如:1-10中不放回抽5个数,结果会有诸如12 2020-07-23 …
从13579这五个数中任意取出三个数,中间添上十或一,使算式得数为1 2020-11-17 …