请问下面的循环有什么好的方法?

godhuang 2011-02-24 01:56:01
有三个数,0-9,按组合的结果返回值

  结果1——中奖号码的个位十位百位数字都相同。
如中奖号码为000、111、999等,中奖号码的个位十位百位数字相同,则返回结果1
  结果2——中奖号码的个位十位百位数字都相连,不分顺序。(数字9、0、1相连)
如中奖号码为123、234、901等,中奖号码个位十位百位数字相连,则返回结果2
  结果3——中奖号码的个位十位百位任意两位数字相同。(不包括结果1)
如中奖号码为001,112、696,中奖号码有两位数字相同,则返回结果3
  结果4——中奖号码的个位十位百位任意两位数字相连。(不包括结果1和结果2,数字9、0、1相连)
如中奖号码为125、450、903,中奖号码有两位数字相连,,则返回结果1

  结果5——不包括以上出现的所有号码。
如中奖号码为157,中奖号码位数之间无关联性,则返回结果1


...全文
245 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Linares 2011-02-24
  • 打赏
  • 举报
回复
when right(left(num,1)+1,1)=substring(num,2,1) or right(substring(num,2,1)+1,1)=substring(num,3,1) then 4


right(,1)舍弃进位,就可以处理 9-0 相连的问题
Linares 2011-02-24
  • 打赏
  • 举报
回复
1层层 when 下去的,不用担心没有排除上面的
Linares 2011-02-24
  • 打赏
  • 举报
回复
select

case
--结果1——中奖号码的个位十位百位数字都相同。
when num not like '%[^'+left(num,1)+']%' then 1
--结果2——中奖号码的个位十位百位数字都相连
/*这个枚举就好了,顺序10个,逆序10个(这里没有)*/
when num in ('012','123','234','345','456','567','678','789','890','901') then 2
--结果3——中奖号码的个位十位百位任意两位数字相同
when len(replace(num,substring(num,1,1),''))=1 or len(replace(num,substring(num,2,1),''))=1 or len(replace(num,substring(num,3,1),''))=1 then 3
-- 结果4——中奖号码的个位十位百位任意两位数字相连
/*这里只列出连续顺连的,其它加多几个 when/or*/
when left(num,1)+1=substring(num,2,1) or substring(num,2,1)+1=substring(num,3,1) then 4
else 5
end

from tb


case when 部分可以写成函数调用
快溜 2011-02-24
  • 打赏
  • 举报
回复
 
declare @str varchar(3)
set @str='222'
if(right(@str,1)=left(@str,1) and right(@str,1)=left(right(@str,2),1))
select '1'

/*

----
1
godhuang 2011-02-24
  • 打赏
  • 举报
回复
就是随机生成,,比如B1 (0-9),B2(0-9),B3(0-9),随机生成一个数字,然后组成B1B2B3这样就是一个结果
godhuang 2011-02-24
  • 打赏
  • 举报
回复
我的想法是这样的,先排序,从小到大,然后标注为A1,A2,A3
如果A1=A2=A3则返回1
如果A1+1=A2 A2+1=A3 外加9 0 1 则返回2
如果A1=A2 <> A3 或者A1<> A2=A3则返回3
如果A1+1=A2 A2+1 <> A3 或者A1+1 <> A2 A2+1 =A3 则返回4
其他返回5,不知道这个逻辑可以不?
快溜 2011-02-24
  • 打赏
  • 举报
回复
就三个数组合成一个字符串,然后返回这个字符串属于上面哪一类...

我想知道你这三个字符串是不是已经给定了,只让电脑判断就可以?
godhuang 2011-02-24
  • 打赏
  • 举报
回复
有结果1先结果1 ,没结果1然后再找结果2,一层一层下去 ,232的话应该是结果3
AcHerat 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 godhuang 的回复:]
有三个数,0-9,按组合的结果返回值

  结果1——中奖号码的个位十位百位数字都相同。
如中奖号码为000、111、999等,中奖号码的个位十位百位数字相同,则返回结果1
  结果2——中奖号码的个位十位百位数字都相连,不分顺序。(数字9、0、1相连)
如中奖号码为123、234、901等,中奖号码个位十位百位数字相连,则返回结果2
  结果3——中奖号码的个位十位百位任意两位数字相……
[/Quote]

这个还是没有特别的划分清楚,比如 232 这个数字,结果3符合吧!两个数字相同,结果4也符合吧!2 和 3 是连续的,那到底是结果3还是结果4?建议楼主还是要仔细看下你的需求,到底说清楚没?
godhuang 2011-02-24
  • 打赏
  • 举报
回复
不好意思,开始发的那个问题有些地方有错字,可能会影响大家的判断,我这里再组合一下,谢谢
有三个数,0-9,按组合的结果返回值

  结果1——中奖号码的个位十位百位数字都相同。
如中奖号码为000、111、999等,中奖号码的个位十位百位数字相同,则返回结果1
  结果2——中奖号码的个位十位百位数字都相连,不分顺序。(数字9、0、1相连)
如中奖号码为123、234、901等,中奖号码个位十位百位数字相连,则返回结果2
  结果3——中奖号码的个位十位百位任意两位数字相同。(不包括结果1)
如中奖号码为001,112、696,中奖号码有两位数字相同,则返回结果3
  结果4——中奖号码的个位十位百位任意两位数字相连。(不包括结果1和结果2,数字9、0、1相连)
如中奖号码为125、450、903,中奖号码有两位数字相连,,则返回结果4
  结果5——不包括以上出现的所有号码。
如中奖号码为157,中奖号码位数之间无关联性,则返回结果5

就三个数组合成一个字符串,然后返回这个字符串属于上面哪一类,可以对有顺序的三个数进行分析,也可以根据组成的字符串进行判断

先排序,从小大到排列,如果A1=A2=A3则返回1
如果A1+1=A2 A2+1=A3 外加9 0 1 则返回2
如果A1=A2 <> A3 或者A1<> A2=A3则返回3
如果A1+1=A2 A2+1 <> A3 或者A1+1 <> A2 A2+1 =A3 则返回4
其他返回5,不知道这个逻辑可以不?
快溜 2011-02-24
  • 打赏
  • 举报
回复
用表的话加where条件就可以。
godhuang 2011-02-24
  • 打赏
  • 举报
回复
就三个数组合成一个字符串,然后返回这个字符串属于上面哪一类,可以对有顺序的三个数进行分析,也可以根据组成的字符串进行判断
godhuang 2011-02-24
  • 打赏
  • 举报
回复
表的话考虑过,感觉1000个不算多也不能算少,自己还要对结果分类,想不出其他的方法的,就用表的方法
Linares 2011-02-24
  • 打赏
  • 举报
回复
你这三个数是1列还3列还是3行,不同的格式有不同的解决方法。
快溜 2011-02-24
  • 打赏
  • 举报
回复

 

--能在表里处理不?
create table tb1(no char(2))
insert into tb1
select '0' union all
select '1' union all
select '2' union all
select '3' union all
select '4' union all
select '5' union all
select '6' union all
select '7' union all
select '8' union all
select '9'
create table tb2(no char(2))
insert into tb2
select * from tb1
create table tb3(no char(2))
insert into tb3
select * from tb1

select a.no+b.no+c.no
from tb1 a,tb2 b,tb3 c order by 1
/*

------
0 0 0
0 0 1
0 0 2
0 0 3
0 0 4
0 0 5
0 0 6
0 0 7
0 0 8
0 0 9
0 1 0
0 1 1
0 1 2
0 1 3
0 1 4
0 1 5
0 1 6
0 1 7
0 1 8
0 1 9
0 2 0
0 2 1
0 2 2
0 2 3
0 2 4
0 2 5
0 2 6
0 2 7
0 2 8
0 2 9
0 3 0
0 3 1
0 3 2
0 3 3
0 3 4
0 3 5
0 3 6
0 3 7
0 3 8
0 3 9
0 4 0
0 4 1
0 4 2
0 4 3
0 4 4
0 4 5
0 4 6
0 4 7
0 4 8
0 4 9
0 5 0
0 5 1
0 5 2
0 5 3
0 5 4
0 5 5
0 5 6
0 5 7
0 5 8
0 5 9
0 6 0
0 6 1
0 6 2
0 6 3
0 6 4
0 6 5
0 6 6
0 6 7
0 6 8
0 6 9
0 7 0
0 7 1
0 7 2
0 7 3
0 7 4
0 7 5
0 7 6
0 7 7
0 7 8
0 7 9
0 8 0
0 8 1
0 8 2
0 8 3
0 8 4
0 8 5
0 8 6
0 8 7
0 8 8
0 8 9
0 9 0
0 9 1
0 9 2
0 9 3
0 9 4
0 9 5
0 9 6
0 9 7
0 9 8
0 9 9
1 0 0
1 0 1
1 0 2
1 0 3
1 0 4
1 0 5
1 0 6
1 0 7
1 0 8
1 0 9
1 1 0
1 1 1
1 1 2
1 1 3
1 1 4
1 1 5
1 1 6
1 1 7
1 1 8
1 1 9
1 2 0
1 2 1
1 2 2
1 2 3
1 2 4
1 2 5
1 2 6
1 2 7
1 2 8
1 2 9
1 3 0
1 3 1
1 3 2
1 3 3
1 3 4
1 3 5
1 3 6
1 3 7
1 3 8
1 3 9
1 4 0
1 4 1
1 4 2
1 4 3
1 4 4
1 4 5
1 4 6
1 4 7
1 4 8
1 4 9
1 5 0
1 5 1
1 5 2
1 5 3
1 5 4
1 5 5
1 5 6
1 5 7
1 5 8
1 5 9
1 6 0
1 6 1
1 6 2
1 6 3
1 6 4
1 6 5
1 6 6
1 6 7
1 6 8
1 6 9
1 7 0
1 7 1
1 7 2
1 7 3
1 7 4
1 7 5
1 7 6
1 7 7
1 7 8
1 7 9
1 8 0
1 8 1
1 8 2
1 8 3
1 8 4
1 8 5
1 8 6
1 8 7
1 8 8
1 8 9
1 9 0
1 9 1
1 9 2
1 9 3
1 9 4
1 9 5
1 9 6
1 9 7
1 9 8
1 9 9
2 0 0
2 0 1
2 0 2
2 0 3
2 0 4
2 0 5
2 0 6
2 0 7
2 0 8
2 0 9
2 1 0
2 1 1
2 1 2
2 1 3
2 1 4
2 1 5
2 1 6
2 1 7
2 1 8
2 1 9
2 2 0
2 2 1
2 2 2
2 2 3
2 2 4
2 2 5
2 2 6
2 2 7
2 2 8
2 2 9
2 3 0
2 3 1
2 3 2
2 3 3
2 3 4
2 3 5
2 3 6
2 3 7
2 3 8
2 3 9
2 4 0
2 4 1
2 4 2
2 4 3
2 4 4
2 4 5
2 4 6
2 4 7
2 4 8
2 4 9
2 5 0
2 5 1
2 5 2
2 5 3
2 5 4
2 5 5
2 5 6
2 5 7
2 5 8
2 5 9
2 6 0
2 6 1
2 6 2
2 6 3
2 6 4
2 6 5
2 6 6
2 6 7
2 6 8
2 6 9
2 7 0
2 7 1
2 7 2
2 7 3
2 7 4
2 7 5
2 7 6
2 7 7
2 7 8
2 7 9
2 8 0
2 8 1
2 8 2
2 8 3
2 8 4
2 8 5
2 8 6
2 8 7
2 8 8
2 8 9
2 9 0
2 9 1
2 9 2
2 9 3
2 9 4
2 9 5
2 9 6
2 9 7
2 9 8
2 9 9
3 0 0
3 0 1
3 0 2
3 0 3
3 0 4
3 0 5
3 0 6
3 0 7
3 0 8
3 0 9
3 1 0
3 1 1
3 1 2
3 1 3
3 1 4
3 1 5
3 1 6
3 1 7
3 1 8
3 1 9
3 2 0
3 2 1
3 2 2
3 2 3
3 2 4
3 2 5
3 2 6
3 2 7
3 2 8
3 2 9
3 3 0
3 3 1
3 3 2
3 3 3
3 3 4
3 3 5
3 3 6
3 3 7
3 3 8
3 3 9
3 4 0
3 4 1
3 4 2
3 4 3
3 4 4
3 4 5
3 4 6
3 4 7
3 4 8
3 4 9
3 5 0
3 5 1
3 5 2
3 5 3
3 5 4
3 5 5
3 5 6
3 5 7
3 5 8
3 5 9
3 6 0
3 6 1
3 6 2
3 6 3
3 6 4
3 6 5
3 6 6
3 6 7
3 6 8
3 6 9
3 7 0
3 7 1
3 7 2
3 7 3
3 7 4
3 7 5
3 7 6
3 7 7
3 7 8
3 7 9
3 8 0
3 8 1
3 8 2
3 8 3
3 8 4
3 8 5
3 8 6
3 8 7
3 8 8
3 8 9
3 9 0
3 9 1
3 9 2
3 9 3
3 9 4
3 9 5
3 9 6
3 9 7
3 9 8
3 9 9
4 0 0
4 0 1
4 0 2
4 0 3
4 0 4
4 0 5
4 0 6
4 0 7
4 0 8
4 0 9
4 1 0
4 1 1
4 1 2
4 1 3
4 1 4
4 1 5
4 1 6
4 1 7
4 1 8
4 1 9
4 2 0
4 2 1
4 2 2
4 2 3
4 2 4
4 2 5
4 2 6
4 2 7
4 2 8
4 2 9
4 3 0
4 3 1
4 3 2
4 3 3
4 3 4
4 3 5
4 3 6
4 3 7
4 3 8
4 3 9
4 4 0
4 4 1
4 4 2
4 4 3
4 4 4
4 4 5
4 4 6
4 4 7
4 4 8
4 4 9
4 5 0
4 5 1
4 5 2
4 5 3
4 5 4
4 5 5
4 5 6
4 5 7
4 5 8
4 5 9
4 6 0
4 6 1
4 6 2
4 6 3
4 6 4
4 6 5
4 6 6
4 6 7
4 6 8
4 6 9
4 7 0
4 7 1
4 7 2
4 7 3
4 7 4
4 7 5
4 7 6
4 7 7
4 7 8
4 7 9
4 8 0
4 8 1
4 8 2
4 8 3
4 8 4
4 8 5
4 8 6
4 8 7
4 8 8
4 8 9
4 9 0
4 9 1
4 9 2
4 9 3
4 9 4
4 9 5
4 9 6
4 9 7
4 9 8
4 9 9
5 0 0
5 0 1
5 0 2
5 0 3
5 0 4
5 0 5
5 0 6
5 0 7
5 0 8
5 0 9
5 1 0
5 1 1
5 1 2
5 1 3
5 1 4
5 1 5
5 1 6
5 1 7
5 1 8
5 1 9
5 2 0
5 2 1
5 2 2
5 2 3
5 2 4
5 2 5
5 2 6
5 2 7
5 2 8
5 2 9
5 3 0
5 3 1
5 3 2
5 3 3
5 3 4
5 3 5
5 3 6
5 3 7
5 3 8
5 3 9
5 4 0
5 4 1
5 4 2
5 4 3
5 4 4
5 4 5
5 4 6
5 4 7
5 4 8
5 4 9
5 5 0
5 5 1
5 5 2
5 5 3
5 5 4
5 5 5
5 5 6
5 5 7
5 5 8
5 5 9
5 6 0
5 6 1
5 6 2
5 6 3
5 6 4
5 6 5
5 6 6
5 6 7
5 6 8
5 6 9
5 7 0
5 7 1
5 7 2
5 7 3
5 7 4
5 7 5
5 7 6
5 7 7
5 7 8
5 7 9
5 8 0
5 8 1
5 8 2
5 8 3
5 8 4
5 8 5
5 8 6
5 8 7
5 8 8
5 8 9
5 9 0
5 9 1
5 9 2
5 9 3
5 9 4
5 9 5
5 9 6
5 9 7
5 9 8
5 9 9
6 0 0
6 0 1
6 0 2
6 0 3
6 0 4
6 0 5
6 0 6
6 0 7
6 0 8
6 0 9
6 1 0
6 1 1
6 1 2
6 1 3
6 1 4
6 1 5
6 1 6
6 1 7
6 1 8
6 1 9
6 2 0
6 2 1
6 2 2
6 2 3
6 2 4
6 2 5
6 2 6
6 2 7
6 2 8
6 2 9
6 3 0
6 3 1
6 3 2
6 3 3
6 3 4
6 3 5
6 3 6
6 3 7
6 3 8
6 3 9
6 4 0
6 4 1
6 4 2
6 4 3
6 4 4
6 4 5
6 4 6
6 4 7
6 4 8
6 4 9
6 5 0
6 5 1
6 5 2
6 5 3
6 5 4
6 5 5
6 5 6
6 5 7
6 5 8
6 5 9
6 6 0
6 6 1
6 6 2
6 6 3
6 6 4
6 6 5
6 6 6
6 6 7
6 6 8
6 6 9
6 7 0
6 7 1
6 7 2
6 7 3
6 7 4
6 7 5
6 7 6
6 7 7
6 7 8
6 7 9
6 8 0
6 8 1
6 8 2
6 8 3
6 8 4
6 8 5
6 8 6
6 8 7
6 8 8
6 8 9
6 9 0
6 9 1
6 9 2
6 9 3
6 9 4
6 9 5
6 9 6
6 9 7
6 9 8
6 9 9
7 0 0
7 0 1
7 0 2
7 0 3
7 0 4
7 0 5
7 0 6
7 0 7
7 0 8
7 0 9
7 1 0
7 1 1
7 1 2
7 1 3
7 1 4
7 1 5
7 1 6
7 1 7
7 1 8
7 1 9
7 2 0
7 2 1
7 2 2
7 2 3
7 2 4
7 2 5
7 2 6
7 2 7
7 2 8
7 2 9
7 3 0
7 3 1
7 3 2
7 3 3
7 3 4
7 3 5
7 3 6
7 3 7
7 3 8
7 3 9
7 4 0
7 4 1
7 4 2
7 4 3
7 4 4
7 4 5
7 4 6
7 4 7
7 4 8
7 4 9
7 5 0
7 5 1
7 5 2
7 5 3
7 5 4
7 5 5
7 5 6
7 5 7
7 5 8
7 5 9
7 6 0
7 6 1
7 6 2
7 6 3
7 6 4
7 6 5
7 6 6
7 6 7
7 6 8
7 6 9
7 7 0
7 7 1
7 7 2
7 7 3
7 7 4
7 7 5
7 7 6
7 7 7
7 7 8
7 7 9
7 8 0
7 8 1
7 8 2
7 8 3
7 8 4
7 8 5
7 8 6
7 8 7
7 8 8
7 8 9
7 9 0
7 9 1
7 9 2
7 9 3
7 9 4
7 9 5
7 9 6
7 9 7
7 9 8
7 9 9
8 0 0
8 0 1
8 0 2
8 0 3
8 0 4
8 0 5
8 0 6
8 0 7
8 0 8
8 0 9
8 1 0
8 1 1
8 1 2
8 1 3
8 1 4
8 1 5
8 1 6
8 1 7
8 1 8
8 1 9
8 2 0
8 2 1
8 2 2
8 2 3
8 2 4
8 2 5
8 2 6
8 2 7
8 2 8
8 2 9
8 3 0
8 3 1
8 3 2
8 3 3
8 3 4
8 3 5
8 3 6
8 3 7
8 3 8
8 3 9
8 4 0
8 4 1
8 4 2
8 4 3
8 4 4
8 4 5
8 4 6
8 4 7
8 4 8
8 4 9
8 5 0
8 5 1
8 5 2
8 5 3
8 5 4
8 5 5
8 5 6
8 5 7
8 5 8
8 5 9
8 6 0
8 6 1
8 6 2
8 6 3
8 6 4
8 6 5
8 6 6
8 6 7
8 6 8
8 6 9
8 7 0
8 7 1
8 7 2
8 7 3
8 7 4
8 7 5
8 7 6
8 7 7
8 7 8
8 7 9
8 8 0
8 8 1
8 8 2
8 8 3
8 8 4
8 8 5
8 8 6
8 8 7
8 8 8
8 8 9
8 9 0
8 9 1
8 9 2
8 9 3
8 9 4
8 9 5
8 9 6
8 9 7
8 9 8
8 9 9
9 0 0
9 0 1
9 0 2
9 0 3
9 0 4
9 0 5
9 0 6
9 0 7
9 0 8
9 0 9
9 1 0
9 1 1
9 1 2
9 1 3
9 1 4
9 1 5
9 1 6
9 1 7
9 1 8
9 1 9
9 2 0
9 2 1
9 2 2
9 2 3
9 2 4
9 2 5
9 2 6
9 2 7
9 2 8
9 2 9
9 3 0
9 3 1
9 3 2
9 3 3
9 3 4
9 3 5
9 3 6
9 3 7
9 3 8
9 3 9
9 4 0
9 4 1
9 4 2
9 4 3
9 4 4
9 4 5
9 4 6
9 4 7
9 4 8
9 4 9
9 5 0
9 5 1
9 5 2
9 5 3
9 5 4
9 5 5
9 5 6
9 5 7
9 5 8
9 5 9
9 6 0
9 6 1
9 6 2
9 6 3
9 6 4
9 6 5
9 6 6
9 6 7
9 6 8
9 6 9
9 7 0
9 7 1
9 7 2
9 7 3
9 7 4
9 7 5
9 7 6
9 7 7
9 7 8
9 7 9
9 8 0
9 8 1
9 8 2
9 8 3
9 8 4
9 8 5
9 8 6
9 8 7
9 8 8
9 8 9
9 9 0
9 9 1
9 9 2
9 9 3
9 9 4
9 9 5
9 9 6
9 9 7
9 9 8
9 9 9

(1000 行受影响)
godhuang 2011-02-24
  • 打赏
  • 举报
回复
随机生成的比如0 1 2 ,2 1 0 ,129, 229 ,339,399 ,159 ,999 应该说有1000种结果
godhuang 2011-02-24
  • 打赏
  • 举报
回复
随机生成的比如0 1 2 ,2 1 0 ,129 229 339,399 129 999 应该说有1000种结果
godhuang 2011-02-24
  • 打赏
  • 举报
回复
先排序,从小大到排列,如果A1=A2=A3则返回1
如果A1+1=A2 A2+1=A3 外加9 0 1 则返回2
如果A1=A2 <> A3 或者A1<> A2=A3则返回3
如果A1+1=A2 A2+1 <> A3 或者A1+1 <> A2 A2+1 =A3 则返回4
其他返回5,不知道这个逻辑可以不?
快溜 2011-02-24
  • 打赏
  • 举报
回复
有三个数,0-9,按组合的结果返回值。

这个组合是已经给定的还是什么?
godhuang 2011-02-24
  • 打赏
  • 举报
回复
而且这个if来if去的真的比较麻烦
加载更多回复(4)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧