日期:2014-05-19  浏览次数:20563 次

同一SQL不同结果
同一Sql在不同的SQL服务器上执行得出结果有所不同,现象如下:
select   a.ID,   a.Str,...   from   atmp   RIGHT   OUTER   JOIN   btmp   --ID为整型,Str为字符串(实际SQL比这个复杂)。
结果1:
ID         Str       .........
0                       .........
34         dfsa
结果2:
ID         Str       .........
NULL     NULL     .........
34         dfsa     .........
不知道为什么数据库把null自动转成0和空串。
是那里设置不对吗?



------解决方案--------------------
你到表中仔细看了吗?一定是null吗?是不是设定默认值了?
好象没有哪个设置可以把null强行为0,除非默认值.
------解决方案--------------------
没见过~
------解决方案--------------------
表中的数据一样吗?
------解决方案--------------------
奇怪
------解决方案--------------------
id不是惟一的,连接后并不是你想象的结果,所以出现 null.
在保证id惟一的情况下,你说的情况是不会出现的.
------解决方案--------------------
那可能是两个机子的NULL显示设置不同~~

set concat_null_yields_null {on|off}

设置成on表示串联空值与字符串将输出 NULL 结果
设置成off表示串联空值与字符串将输出字符串本身(空值作为空字符串处理)

------解决方案--------------------
那可能是两个机子的NULL显示设置不同~~

set concat_null_yields_null {on|off}
---------------------
不会的,你说的是串联结果视为空值或自身,楼主说的不是这种情况,不存在串联的前提