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 = "";
	}
}

  

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM