当前位置: 代码迷 >> Oracle开发 >> oracle中char(十)类型和number(11)类型
  详细解决方案

oracle中char(十)类型和number(11)类型

热度:402   发布时间:2016-04-24 07:22:05.0
oracle中char(10)类型和number(11)类型
oracle中有两个表,一个表中的字段是char(10)类型的,另一个表中的字段是number(11)类型的,我想以这两个字段为关联关系把两个表连在一起,请问大侠们,能不能通过sql语句进行拼接来实现啊

------解决方案--------------------
SQL code
--可以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 bvalfrom testa a,testb bwhere 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边都转换也行
------解决方案--------------------
SQL code
这个关联要发生数据类型的隐式转换,性能效率上来说比较低可以把number类型转换成char的,注意char的10个长度,如果里面的值没有10个长度,会在后面补空字符的,补到10个长为止可以这样写select * from a full join b on b.char_file=rpad(a.number_file,10,'')
  相关解决方案