[i=s] 本帖最后由 驻跸映辉A 于 2011-12-22 14:39 编辑
在一个SQL的检索言文中的where中含有多个空格如下面的例子:DB racle 10.2.0.4
A.)测试环境:
create table tbl01 (col1 char(9),col2 char(9),col3 char(9));
insert into tbl01 values ('1234567','abc','a');
insert into tbl01 values ('2345','aaa','b');
insert into tbl01 values ('345678910','abcdefghi','cde');
create table tbl02 as select * from tbl01;
B.) SELECT tbl01.col1, tbl01.col2, aaa.col3 FROM tbl01
,(SELECT
substr(col1||' ',0,9) col1,
col2,
col3
FROM tbl02
UNION ALL
SELECT * from tbl01) aaa
WHERE tbl01.col1 = '1234567'
and tbl01.col1 = aaa.col1;
C.) 结 果0行返回(结果错误)
正确结果:
COL1 COL2 COL3
-------- ---- ----
1234567 abc a
1234567 abc a
解决方法:
SQL> alter session/system set "_optimizer_cost_based_transformation"=off;
SQL> alter session/system set "_optimizer_push_pred_cost_based"=false;
SQL> alter session/system set "_optimizer_enhanced_filter_push"=false;
或者升级到10.2.0.5
原因:Bug7374278以前已经修正,但PSR10.2.0.4的regression机能导入后,这个错误再次发生。
在一个SQL的检索言文中的where中含有多个空格如下面的例子:DB racle 10.2.0.4
A.)测试环境:
create table tbl01 (col1 char(9),col2 char(9),col3 char(9));
insert into tbl01 values ('1234567','abc','a');
insert into tbl01 values ('2345','aaa','b');
insert into tbl01 values ('345678910','abcdefghi','cde');
create table tbl02 as select * from tbl01;
B.) SELECT tbl01.col1, tbl01.col2, aaa.col3 FROM tbl01
,(SELECT
substr(col1||' ',0,9) col1,
col2,
col3
FROM tbl02
UNION ALL
SELECT * from tbl01) aaa
WHERE tbl01.col1 = '1234567'
and tbl01.col1 = aaa.col1;
C.) 结 果0行返回(结果错误)
正确结果:
COL1 COL2 COL3
-------- ---- ----
1234567 abc a
1234567 abc a
解决方法:
SQL> alter session/system set "_optimizer_cost_based_transformation"=off;
SQL> alter session/system set "_optimizer_push_pred_cost_based"=false;
SQL> alter session/system set "_optimizer_enhanced_filter_push"=false;
或者升级到10.2.0.5
原因:Bug7374278以前已经修正,但PSR10.2.0.4的regression机能导入后,这个错误再次发生。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26552866/viewspace-721854/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26552866/viewspace-721854/