您的位置:程序门 -> ms-sql server -> 应用实例



能不能实现这样的 where 容错?急


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


能不能实现这样的 where 容错?急[已结贴,结贴人:hmlegion]
发表于:2008-01-07 09:38:32 楼主
比如说这样的

select   *   from   tmptbl   where   (条件1   ...   条件10)

条件1   ...   条件10   允许错   2~4   个
也就是说满足任意的   6到8个条件

想了一晚上了没想出来,各位老大帮帮忙啊,谢谢了
发表于:2008-01-07 09:44:231楼 得分:10
条件1       ...       条件10       允许错       2~4       个  
也就是说满足任意的       6到8个条件

------------
要是只错了1个或1个都没错呢?
发表于:2008-01-07 09:45:382楼 得分:5
奇怪的逻辑
发表于:2008-01-07 09:49:143楼 得分:5
sql code
自己做成动态的sql就行了. 例如 declarea @sql as varchar100) if con1 and con2 .. set @sql = '....' else if con3 set @sql = '....' else EXEC@sql)
发表于:2008-01-07 09:55:104楼 得分:5
可以人工过小滤掉

select   *   from   t   where   a=isnull(@a,a)   and   b=isnull(@b,b)
要省略的列可以传null   a=isnull(null,a)就等于a=a   成立
发表于:2008-01-07 11:23:495楼 得分:0
to   dawugui:
我是要在   where   里面进行判断

to   yinqi025:
我得统计出错个数的

to   dobear_0922:
我的   6到8个只是举个例子,实际上我的条件可能上百个的

是这样的,
我做彩票软件,
我先把数字按奇偶发布、大小比、质合等等分解成几百种条件
我根据原先的开奖号码,从几百种条件里面计算出最可能的几十或上百种种条件
由此来计算下一期的号码

我挑选的这些条件方式大部分都是正确的
但是不可能会全对
正确率大概在   80%左右
所以得要容错

我原来是直接在软件里面写的
对于2位、3位数的彩票速度是很快了,5位的还能忍受,不过七位以上的就很慢了

我昨天发现原来直接写   sql   语句可以更快的
别的问题都解决了,就差这个问题了

不过好像也快解决了
我正在试在   where   里面加入   case   when
不过对这个   case   when   不是很了解
要是能提供这样的建议也好
发表于:2008-01-07 11:52:566楼 得分:0
哈哈,终于解决了,看看我的示例:

我建了个   tblno的表,表里就一个字段   tno   char(1)
假设是个3位数的彩票:
3个条件:第1位小,第2位质,第3位奇,容错2个:
select   t1.tno+t2.tno+t3.tno   from   tblno   as   t1,tblno   as   t2,tblno   as   t3
where   ((case   when   cast(t1.tno   as   tinyint) <=4   then   1   else   0   end)+
            (case   when   dbo.isprime(cast(t2.tno   as   tinyint))=1   then   1   else   0   end)+
            (case   when   cast(t3.tno   as   tinyint)   %2=0   then   1   else   0   end)) <=2
发表于:2008-01-07 11:57:407楼 得分:0
哈哈,终于解决了

------------
恭喜,你的解决方法和我想的一样,,,
发表于:2008-01-07 12:12:088楼 得分:0
up
发表于:2008-01-07 12:41:269楼 得分:5
如果要在where   条件中做判断,可使用6楼的方法

如果条件不确定,则需要使用动态语句来实现

发表于:2008-01-07 12:45:4210楼 得分:5
好样
发表于:2008-01-07 12:54:2511楼 得分:0
虽然是我自己解决的,不过散分啦,见者有份
晚上再来散
发表于:2008-01-08 18:15:2512楼 得分:5
解决!!

接分!!

发表于:2008-01-08 20:11:1513楼 得分:5
..........
发表于:2008-01-08 20:12:5014楼 得分:5
接分


快速检索

最新资讯
热门点击