日期:2014-05-17 浏览次数:21207 次
--可以 create table testa( a number(11), val varchar2(20)); create table testb( a char(10), val varchar2(20)); insert into testa values(1,'testa'); insert into testb values('1','testb'); select a.a,a.val aval,b.val bval from testa a,testb b where a.a=b.a;
------解决方案--------------------
SELECT * FROM A;
ID NAME
----- -----
1 1
2 2
3 3
4 4
SELECT * FROM B;
ID NAME
----- -----
1 1
2 2
3 3
4 4
SELECT * FROM A,B WHERE TO_CHAR(A.ID) = B.NAME;
ID NAME ID NAME
----------- -----------
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
------解决方案--------------------
oracle有隐式转换 不行的话 可以手动转换 to_number(aa)=bb 或 aa=to_char(bb) 2边都转换也行
------解决方案--------------------
这个关联要发生数据类型的隐式转换,性能效率上来说比较低 可以把number类型转换成char的,注意char的10个长度,如果里面的值没有10个长度,会在后面补空字符的,补到10个长为止 可以这样写 select * from a full join b on b.char_file=rpad(a.number_file,10,'')