论坛首页 入门技术论坛

Oracle Bug

浏览 3063 次
锁定老帖子 主题:Oracle Bug
该帖已经被评为新手帖
作者 正文
   发表时间:2007-09-21  
DAO
测试内容:
create table A(
	A1 VARCHAR(16)
);
create table B(
	B1 VARCHAR(16)
);

insert into A(A1) values('content_1');
insert into A(A1) values('content_2');
insert into A(A1) values('content_3');

insert into B(B1) values('content_4');

-- 测试 --
select count(*) from A where A1 in (select A1 from B);
-- 表B中并不存在A1字段 --

输出结果:
3
   发表时间:2007-09-21  
在plsql的sql windows
select count(*) from A where A1 in (select A1 from B);

count(*)
0



command windows

select count(*) from A where A1 in (select A1 from B);

  COUNT(*)
----------
         3



应该只是显示的问题
实际结果是没问题的
0 请登录后投票
   发表时间:2007-09-21  
这个编译的过程就有问题,应该编译都不能通过的。
B表里根本就没A1字段,怎么可以查出值呀。
如果单独运行 select A1 from B 绝对是错误的。
一组合就对了。
0 请登录后投票
   发表时间:2007-09-21  
后面应该是当做临时表来处理的
如果是临时表的话 机制可能不同
至于说报不报错.....
无所谓了..
结果正确就行
0 请登录后投票
   发表时间:2007-09-21  
但是如果要是这样用(只要不和where后的字段一样,并且在B中也没该字段)如:
select count(*) from A where A1 in (select A2 from B);
它就会报错了。
这样就对的(和where后的字段一样),在oracle中,在SQLServer中也是错的。
select count(*) from A where A1 in (select A1 from B);

0 请登录后投票
   发表时间:2007-09-21  
这个报错是肯定的
因为check的地方不一样
对oracle如果建临时表机制不了解   不过你要判断一个字段in 临时表 最少那个临时表要有这个字段吧

SQLServer没怎么多用就   不太了解   他和oracle太多地方不一样了
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics