oracle中有两个表,一个表中的字段是char(10)类型的,另一个表中的字段是number(11)类型的,我想以这两个字段为关联关系把两个表连在一起,请问大侠们,能不能通过sql语句进行拼接来实现啊

解决方案 »

  1.   


    --可以
    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;
      

  2.   

    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     
      

  3.   

    oracle有隐式转换 不行的话 可以手动转换  to_number(aa)=bb 或 aa=to_char(bb) 2边都转换也行
      

  4.   


    这个关联要发生数据类型的隐式转换,性能效率上来说比较低
    可以把number类型转换成char的,注意char的10个长度,如果里面的值没有10个长度,会在后面补空字符的,补到10个长为止可以这样写
    select * from a full join b on b.char_file=rpad(a.number_file,10,'')