zoukankan      html  css  js  c++  java
  • 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 = "";
    	}
    }
    

      

    写在最后

      哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

     相关推荐:

  • 相关阅读:
    存储过程和触发器
    RuPengWang项目
    短信验证
    Lucene.Net 站内搜索
    Quartz 定时任务(含Redis)
    网上支付(支付宝/银联)
    iOS 图片选择的路径处理(转)
    iOS 使用cocoaPods总结 ----摩天居士博客
    iOS 开发之本地化 国际化
    iOS 8 Xcode6 设置Launch Image 启动图片<转>
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/10064955.html
Copyright © 2011-2022 走看看