随机生成唯一的四位字符串-由大小写字母和数字组成

Posted 青山不改,绿水长流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机生成唯一的四位字符串-由大小写字母和数字组成相关的知识,希望对你有一定的参考价值。

---法1:数据库方法
create or replace function FUNC_GEN_PAY_ID

 return CHAR
is
   v_param        varchar(1);--字符参数
   v_payid_param  varchar(4);--字符累加
   v_pay_id       varchar(4);--4位字符
   v_x            number;--循环的次数变量
   v_y            number;--是否生成 1:是  0:否
   v_rowCnt       number ;
begin
  --初始值
  v_x :=1;
  v_y :=1;
  v_payid_param :=‘‘;
  WHILE v_y =1 LOOP
    FOR v_x IN REVERSE 1 .. 4 LOOP
      select * into v_param from(
        select *
        from(
        select chr(ascii(‘A‘)+ROWNUM-1) S from dual connect by rownum<=26
        UNION  ALL
        select chr(ascii(‘a‘)+ROWNUM-1) S from dual connect by rownum<=26
        UNION  ALL
        select chr(ascii(‘0‘)+ROWNUM-1) S from dual connect by rownum<=10
        )ORDER BY dbms_random.value)
      where rownum<2;
      v_payid_param :=v_payid_param||v_param;
    END LOOP;
    SELECT COUNT(*)
    INTO v_rowCnt
    FROM DUAL
    WHERE EXISTS(
      SELECT 1
        FROM yst_pay_info
        WHERE  is_delete = ‘0‘
          AND  pay_id=v_payid_param);
    IF v_rowCnt = 1 THEN
      v_y :=1;
    ELSE
      v_pay_id :=v_payid_param;
      v_y :=0;
    END IF;
  END LOOP;
  return(v_pay_id);
end FUNC_GEN_PAY_ID;

 

--法2:Java方法(未校验是否唯一)

public class aa {

  /**
   * @param args
   */
  public static void main(String[] args) {
  
    System.out.println(get4Code());
  }
  public static  String get4Code(){
    StringBuffer sb = new StringBuffer();
    String codes ="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
    Random random = new Random();
    for(int i=0;i<codes.length();i++){
      char c = codes.charAt(random.nextInt(codes.length()));
      System.out.println(c);
      if(sb.length()==4) break;
      if(!sb.toString().contains(c+"")) sb.append(c);
    }
    return sb.toString();
  }

}

以上是关于随机生成唯一的四位字符串-由大小写字母和数字组成的主要内容,如果未能解决你的问题,请参考以下文章

Java实现随机生成由字母数字组合的N位随机数

java怎么实现自动生成一个由英文字母(区分大小写)、数字、符号组成,6-12个字符 的密码

java 一次生成一个无重复随机

自定义一个字符串函数,其功能是自动产生一个由字母和数字组成的任意位数的字符串,用java编写,求

#在26个大小写字母(52个),以及9个数字组成的字符列表中,随机生成10个8位密码

如何在SQL里生成四位随机数?