2016-12-28 54 views
1

表列:ID,姓名,年龄两排在Oracle数据库比较和显示列不匹配

第一排:

select 11, 'James', 22 from dual; 

这将返回

11 James 22 

第二行:

select * from supplier where id=11`; 

这将返回

11 Vinod 25 

现在,我想都行比较:

11 James 22 
11 Vinod 25 

它应该返回其中有差异的列。

名称不匹配 年龄不匹配

我使用12C是有内置的功能,在Oracle中,这将解决这个问题。 或者我可以从中获得相同解决方案的任何其他方式。

在此先感谢..

`

+0

都是你想要的行比较目前在同一个表中? – GurV

+0

我正在比较我的静态数据行与表数据行 – vinod

+0

没有这样的内置功能。但实现起来很简单。什么是阻滞剂? – GurV

回答

3

您可以使用joindecode(可以使用case备选地),以找出是否列值匹配:

with cte(id, name, age) as (select 11, 'James', 22 from dual) 
select 
    s.id, 
    decode(s.name, t.name, null, 'Name mismatch') name_check, 
    decode(s.age, t.age, null, 'Age mismatch') age_check 
from supplier s 
inner join cte t 
on s.id = t.id 
where s.id = 11; 
+0

作品像魅力..感谢Gurwinder有一个美好的一天.. – vinod

+0

我也将尝试与案例以及.. – vinod

相关问题