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

查看:151
本文介绍了sql语句 - Oracle中如何批量将 银行卡号 的中间部分隐藏为****的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在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该怎么写???

解决方案

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

这篇关于sql语句 - Oracle中如何批量将 银行卡号 的中间部分隐藏为****的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆