防止姓名重复解决

这里以Oracle 10g为实,项目中需要录入人员,而人员的姓名是不能重复的,如果有重复,需要在后面增加1,2,3.....

首先,判断姓名是否存在

select * from hr_archives where username='张三';

  如果存在,获取所有张三1、张三2的个数

   select count(*) from hr_archives where regexp_like(username,'\d*$') ;

*思考:这里有个问题,如果录入的就是张三1,而数据库中已经存在张三、张三1、张三2、张三3;则上面的方法结果是 张三11 而不是我们想要的张三4;

  好,我们这样 select count(*) from hr_archives where  REGEXP_REPLACE(username,'\d*$','') = REGEXP_REPLACE('张三1','\d*$',''),

  这样我们录入了张三4;

  但是,如果我们满足上面,第一步中,如果我直接录入张三6,这是满足的,此时数据库有张三、张三1、张三2、张三3,张三4,张三6,我们再录入张三的时候,

  第二步会给我返回的结果是张三6,但是张三6已经存在;

问题就探讨到这里,暂时就这样实现了,虽然不完美。

 

转载于:https://www.cnblogs.com/kongxp/p/6277507.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值