有人研究过SQL查询出现错误的情况吗?

最近有一次执行统计的SQL命令,类似select sum(num) from table where 时间段
部分结果返回较大的数值
后来又重新执行了一次,返回的数值正确了
我只知道老早使用foxbase进行计算时
如含有浮点数(也就是有小数部分)结果有时会出现问题
SQL_SERVER有没有类似的其它不容易注意到的各种问题
希望高手给予指教
---------------------------------------------------------------

没有这种问题,
你加个ORDER BY
在试试
---------------------------------------------------------------

先怀疑自己,实在没招儿再怀疑微软。
---------------------------------------------------------------

select sum(num) from table where 时间段
--------------------------------^^^^^^你要小心时分秒不要直接用=
---------------------------------------------------------------

你现在还能查出两个不一样的结果吗?

要真是这样,你把表内容贴出来,我也来试试!
---------------------------------------------------------------

select count(*),cum(col),code from table
where time between start and end
group by code

你不要用between...and 语句,而是用 where time > start and time

 1<end \---------------------------------------------------------------="" by="" code="" group="" 我原来用过between,好象会出一些莫名其妙的问题,我改成这样就没有问题了="" 没有,你在仔细观察看出错时,是否与表中的数据值有关。="" 看一看="" 遇到这种情况,你可用别的语句代替where中的条件,如用="">,&lt;代替between...and...看看结构如何,(时间start最好用'##/##/####')如还有问题,你就应该看看你表中的数据了   
 2\---------------------------------------------------------------   
 3  
 4当时做过一个,这个字段有空值的时候,并且我用了这个字段时间计算,当时查询就出错了,我就把那个字段设置就非空的(业务上也是这样的)。不知道有什么有没有什么好的解决方法。   
 5\---------------------------------------------------------------   
 6  
 7是不是你的数据有问题,用sum(isnull(,))试试。   
 8不过不应该是,我也觉得应该先怀疑自己!在任何程序设计时都应该这样。   
 9\---------------------------------------------------------------   
10  
11如果任何 BETWEEN 或 NOT BETWEEN 谓词的输入为 NULL,则结果是 UNKNOWN,很可能是因为 NULL 值得原因,你在测试一下。   
12  
13\---------------------------------------------------------------   
14  
15SQL SERVER有时是会出比较妖的事,有一回我见过一个表,无征兆的,就无法更新了。备份再恢复,又好了。   
16\---------------------------------------------------------------   
17  
18时间最好用浮点数表示,这样就不容易出错   
19\---------------------------------------------------------------   
20  
21保险一点,与关键字冲突的加上[]:   
22  
23select count(*),sum(col),code from [table]   
24where [time] between [start] and [end]   
25group by code   
26  
27  
28\---------------------------------------------------------------   
29  
30用between是会有些莫名其妙的错误,用time&gt; start and time <end --="" \---------------------------------------------------------------="" from="" select="" sum(num)="" table="" where="" 效果较好="" 时间段=""> sum(isnull(num,0)   
31时间段 --&gt; convert(char(10),rq,111) ....   
32用这样的语句去对付,如果还出错就应该是客户机有病毒或WINDOWS的数据访问部件坏了。</end></end>
Published At
Categories with 数据库类
comments powered by Disqus