为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle中如何批量将 银行卡号 的中间部分隐藏为****

Oracle中如何批量将 银行卡号 的中间部分隐藏为****

慕码人2483693 2018-07-21 13:26:41
在Oracle数据库中有一张BANKCARD表,其中有一个字段ID,记录着银行卡号的明文。现在想把卡号的中间部分隐藏,只显示前6位和后4位,其他的部分改为*星号。比如卡号为6228480010028888),隐藏后储存的是622848****8888。卡号的位数并不是固定的,一般在15~19位之间。现在考虑的SQL是update BANKCARD set id=REPLACE(id,substr(id,6,id.length-4) ,'*') where id.length > 10 ;其中的.length不是规范的,请问有什么方法可以获取这个字段的长度?顺便求各位大神指导最靠谱的SQL该怎么写???
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

select substr(ID, 1, 6) || '******' || substr(ID, LENGTH(ID)-3, LENGTH(ID)) from BANKCARD; 

update BANKCARD set ID = substr(ID, 1, 6) || '******' || substr(ID, LENGTH(ID)-3, LENGTH(ID));


查看完整回答
反对 回复 2018-07-25
?
青春有我

TA贡献1784条经验 获得超8个赞

update BANKCARD set ID = substr(id, 1, 6) || lpad('*', length(id)-10, '*') || substr(id, -4)

查看完整回答
反对 回复 2018-07-25
  • 2 回答
  • 0 关注
  • 1540 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信