oracle 替换字符串中指定位置内容
1.情景展示
返回服务器的身份证号需要进行加密:只保留前四位和后四位,中间使用*代替,如何实现?
2.解决方案
第一步:查看该表的身份证号的长度有几种类型;
第二步:编写sql
错误方式:
长度为15的会被替换成''。
正确方式:
--截取身份证号 SELECT DECODE(LENGTH(ID_CARD), 18, REPLACE(ID_CARD, SUBSTR(ID_CARD, 5, 10), '**********'), 15, REPLACE(ID_CARD, SUBSTR(ID_CARD, 5, 7), '*******')) 身份证号 FROM VIRTUAL_CARD_TEMP;
2020/07/03
身份证号保留首位和最后六位的前三位,如何实现?
SELECT DECODE(LENGTH(V.CARDNUM), 18, SUBSTR(V.CARDNUM, 1, 1) || '***********' || SUBSTR(V.CARDNUM, 13, 3) || '***', 15, SUBSTR(V.CARDNUM, 1, 1) || '********' || SUBSTR(V.CARDNUM, 10, 3) || '***') CARDNUM FROM VIRTUAL_CARD V
JAVA代码实现
String str = "*"; String id = ""; for (int i = 0; i < list.size(); i++) { if (list.get(i).get("CARDNUM") != null) { id = list.get(i).get("CARDNUM").toString(); StringBuilder sb = new StringBuilder(id); for (int t = 1; t < id.length(); t++) { if (t == id.length() - 6 || t == id.length() - 5 || t == id.length() - 4) {} else { sb.replace(t, t + 1, str); } } list.get(i).put("CARDNUM", sb); id = ""; } }
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/10064955.html