lidg520 发表于 2008-7-1 13:48:03

sybaseIQ运算怪象

select (10578+12294)/2,(10578+12294+12972)/3,(10578+12294+12972+12255)/4,(10578+12294+12972+12255+15356)/5;

--sybase IQ:   11436,-9897,-4359,-416               (错误值)
--SQL Server 2000:11436,11948,12024,12691(正确值)
问题:为什么会出现负数???

goodqy 发表于 2008-8-20 15:04:52

select 11111+11111+11111

结果也是错误的,为
-32203

Jcat 发表于 2008-9-5 14:14:36

显然是数据溢出了嘛,应该是数据类型的问题

IQ默认是 smallint 类型的,2个字节,能容纳的整数范围 (-32768 ~ +32767)
SQL Server默认是 int 类型,4个字节,能容纳上亿的整数范围,很大了

select convert(int, 11111) + 11111 + 11111
结果为 33333: “短”的数据类型,自动会往“长”的数据类型转换,所以只要给它一个int型,其它都会自动转成int型,这样就不会溢出了。
页: [1]
查看完整版本: sybaseIQ运算怪象

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com