【Oracle】问题——关于oracle中以Blob字段查找重复值问题

【Oracle】问题——关于oracle中以Blob字段查找重复值问题

问题产生

最近在工作当中有个统计问题,统计Oracle数据库里面人员表中简历一致的人的有哪些。很明显,就是查重嘛。说到查重,当然想到就是Group by方法。

库表结构(简单的还原一下库表)

create table cs(
id int PRIMARY KEY not null,
name NVARCHAR2(50) not null,
jl blob not null
);
select * from cs;
insert into cs  select 1,'Tom',to_blob('123412f') from dual;
insert into cs  select 2,'King',to_blob('123412f') from dual;
insert into cs  select 3,'Leo',to_blob('124123F21F') from dual;

库表结构

操作

1.通过Group by 方式进行查重(操作失败)

遇到这个问题,我熟啊!写group by语句就行了呗,然后就写了这样的语句

select  jl,count(1) from cs group by jl having count(1)>1;

当我美滋滋开始执行的时候,却出现的问题
问题1
查了查相关资料知道了,oralce是不能通过blob类型的字段进行group by的,那我把这个字段用to_char()转换一下试试看

select jl,count(1) from cs group by to_char(jl) having count(1)>1;

问题2
显然,group by 也不能后跟to_char()函数。那我只能是自己写语句吧。

2.自己写语句查重

如果不能用group by 进行查重的话,只能是自己写查重语句,然后就写了如下语句

select * from cs t1 where exists (select 1 from cs t2 where to_char(t2.jl) = to_char(t1.jl) and t2.id !=t1.id);

需要注意的是blob类型字段是不能直接=,需要to_char()转换,这个语句就执行成功了。结果如下,问题解决。
结果1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值