2011-01-31 5 views
-3

나는 이와 같은 두 개의 열이 있습니다.오라클의 다른 열에서 비슷한 데이터 찾기

TC_NO  VER_NO 
19262512794 1926251279  
31124177286 1111111111 
31067179194 2222222222 
65617278204 6561727820 
31483188084 0000000000 

내가 원하는 VER_NO의 처음 10 문자가 같은 TC_NO의 처음 10자를 찾는 것입니다 (TC_NO 11 문자, VER_NO 10 문자입니다) ..

예를 들어이 테이블의 결과가 있어야한다 :

TC_NO  VER_NO 
19262512794 1926251279 
65617278204 6561727820 

어떻게하면 Oracle에서 수행 할 수 있습니까?

답변

4
select * 
from MYTABLE 
where substr(TC_NO,1,10) = VER_NO 
2

null이 없다고 가정합니다.

select * 
from MYTABLE 
where substr(TC_NO,1,10)=substr(VER_NO, 1, 10); 

null이 있고 동등한 것으로 원할 경우 당신은 널 (null)을 가지고 있고 당신은 그들이 동일 싶지 않다

select * 
from MYTABLE 
where substr(NVL(TC_NO, '-'),1,10)=substr(NVL(VER_NO, '-'), 1, 10); 

합니다.

select * 
from MYTABLE 
where substr(NVL(TC_NO, '-'),1,10)=substr(NVL(VER_NO, '|'), 1, 10); 
+1

좋은 답변입니다. 첫 번째 질의는 "[has has nulls and null]"에 대해서도 작동합니다 ('null = null'은 false이고'substr'는'null'에 사용될 때'null'을 반환합니다) . – Allan

+0

좋은 점은 nulls를 처리 할 때 명시 적으로 선호하는 경우입니다 (이 경우 중요하지 않음). 그러나 여러 술어가있는 외부 조인 인 경우에도 마찬가지입니다. – Sumit

관련 문제