select a.*, c.* from torddtl a, tstkindtl c where a.num || a.line = (c.fordnum || c.fordline)(+)这条语句怎么执行的时候报错呢
select * from table1 a left join table2 b on a.num = b.num and a.line = b.line这条语句在PL/SQL里执行的时候,报错啊 “ORA-00933:SQL命令未正确结束”
select * from table1 a left join table2 b on a.num = b.num and a.line = b.line 这个在9i里支持,在817里不支持。这个找到原因了。select a.*, c.* from torddtl a, tstkindtl c where a.num || a.line = (c.fordnum || c.fordline)(+)这条语句怎么执行的时候报错:“ORA-00936:缺少表达式”。 怎么改呢?
select a.*, c.* from torddtl a, tstkindtl c where a.num || a.line = (c.fordnum || c.fordline)(+) ---------------- a.num,a.line 是int型,改为 to_char(a.num) || to_char(a.line) 后面两个一样
select a.*, c.* from torddtl a, tstkindtl c where (to_char(a.num) || to_char(a.line)) = (to_char(c.fordnum) || to_char(c.fordline))(+)我这样写了,还是不行啊
报的还是: “ORA-00933:SQL命令未正确结束”
select a.*, c.* from torddtl a, tstkindtl c where a.num || a.line = (c.fordnum || c.fordline)(+)这个是有漏洞的,即使能通过编译 假设a.num=1 a.line=23 c.fornum=2 c.fordline=3 你就会得出错误的结果
嗯,是存在这样的漏洞。 可是如果忽略这个漏洞的话, select a.*, c.* from torddtl a, tstkindtl c where a.num || a.line = (c.fordnum || c.fordline)(+) 还是执行不通啊
select a.*, c.* from torddtl a left join tstkindtl c on a.num || a.line = c.fordnum || c.fordline 这样应该是可以通的,用+的话是不能对字段处理了还加(+)。 你非要这样的话就只有 。 select b.*,d.* from (select a.*,a.num||a.line nl from torddtl a) b, (select c.*,c.fordnum||c.fordline nl from tstkindtl c) d where b.nl=d.nl(+);
select a.*, b.* from table1 a left outer join table2 b on a.num = b.num and a.line = b.line
from table1 a left join table2 b
on a.num = b.num and a.line = b.line
等同
这样的结果包含A表中的全部数据..
对于B表中两个条件都和A表条件相同的记录..
B表中的那部分数据才会出现在结果集合中..否则都为NULL
真是强!!!
小弟佩服阿
from torddtl a, tstkindtl c
where a.num || a.line = (c.fordnum || c.fordline)(+)这条语句怎么执行的时候报错呢
from table1 a left join table2 b
on a.num = b.num and a.line = b.line这条语句在PL/SQL里执行的时候,报错啊
“ORA-00933:SQL命令未正确结束”
from table1 a left join table2 b
on a.num = b.num and a.line = b.line
这个在9i里支持,在817里不支持。这个找到原因了。select a.*, c.*
from torddtl a, tstkindtl c
where a.num || a.line = (c.fordnum || c.fordline)(+)这条语句怎么执行的时候报错:“ORA-00936:缺少表达式”。
怎么改呢?
from torddtl a, tstkindtl c
where a.num || a.line = (c.fordnum || c.fordline)(+)
----------------
a.num,a.line 是int型,改为 to_char(a.num) || to_char(a.line)
后面两个一样
from torddtl a, tstkindtl c
where (to_char(a.num) || to_char(a.line)) = (to_char(c.fordnum) || to_char(c.fordline))(+)我这样写了,还是不行啊
“ORA-00933:SQL命令未正确结束”
from torddtl a, tstkindtl c
where a.num || a.line = (c.fordnum || c.fordline)(+)这个是有漏洞的,即使能通过编译
假设a.num=1 a.line=23
c.fornum=2 c.fordline=3
你就会得出错误的结果
可是如果忽略这个漏洞的话,
select a.*, c.*
from torddtl a, tstkindtl c
where a.num || a.line = (c.fordnum || c.fordline)(+)
还是执行不通啊
from torddtl a left join tstkindtl c
on a.num || a.line = c.fordnum || c.fordline
这样应该是可以通的,用+的话是不能对字段处理了还加(+)。
你非要这样的话就只有 。
select b.*,d.*
from
(select a.*,a.num||a.line nl
from torddtl a) b,
(select c.*,c.fordnum||c.fordline nl
from tstkindtl c) d
where b.nl=d.nl(+);
from table1 a left outer join table2 b
on a.num = b.num and a.line = b.line