2011-01-31 60 views
-3

我有两列这样。 (TC_NO是11字符,VER_NO为10个字符)从Oracle中的不同列中查找类似的数据

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

我要的是,发现VER_NO的第10个字符是相同的TC_NO的前10个字符..

例如,对于此表中的结果应该是:

TC_NO  VER_NO 
19262512794 1926251279 
65617278204 6561727820 

我该怎么在Oracle中做到这一点?

回答

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

假设你没有空位。

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

如果你有空值,你希望他们是平等的。

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

好,全面的答案。第一个查询将适用于“[有]空值,并且不希望它们相同”场景('null = null`为false,'substr`在'null`上使用时将返回null]) 。 – Allan 2011-01-31 14:50:02

相关问题