2011-03-23 97 views
0

我想比较两列中15列的内容。 我正在使用db2 9和jdbc。 我可以使用SQL得到的结果,如“匹配或不匹配”jdbc数据比较


,我怎么能得到列不同?

+0

你要知道,如果两个r所有15列的行数都相同? – Thilo 2011-03-23 03:55:54

+0

@Thilo你是对的 – kuangfuking 2011-03-24 03:24:44

回答

1

您可以使用EXCEPT运算符来执行此操作。

在下面的例子中,我使用公共表表达式来获取一个单个行(假设,在这种情况下,id是主键。

with r1 as (select c1, c2, ..., c15 from t where id = 1), 
    r2 as (select c1, c2, ..., c15 from t where id = 2) 
select * from r1 
except 
select * from r2 

如果返回0行,则该行是相同的,如果它返回一个排,那么两行不同

如果你真的想要得到的结果是“匹配”或“不匹配”:。

with r1 as (select c1, c2, ..., c15 from t where id = 1), 
    r2 as (select c1, c2, ..., c15 from t where id = 2), 
    rs as (select * from r1 except select * from r2) 
select 
    case when count(*) = 0 then 'MATCH' 
     else 'NOT MATCH' 
     end as comparison 
from 
    rs; 
+0

@lan Bjorhovde我可以在JDBC中使用这样的sql吗? – kuangfuking 2011-03-24 03:25:50

+0

@kuangfuking:如果DB2对SQL很好,它应该可以工作。 JDBC只会传递SQL。 – Thilo 2011-03-24 03:57:24

+0

@kuangfuking:是的。 – 2011-03-25 00:43:43