백엔드

[Java/Postgresql] 랜덤 문자열 생성 - get_random_string()

BeforB 2022. 3. 21. 21:51
728x90

 

 

Java나 DB에서 Primary key나 Unique key와 같은 곳에 사용하기 위해 종종 Random String이 필요한 경우가 있다.

길이를 입력하면 숫자, 알파벳 대소문자를 포함하는 랜덤 문자열을 반환하는 함수를 생성하는 방법을 정리해 본다. 아래 코드를 응용하면 특수문자 등 랜덤 스트링을 구성하는 문자들의 커스텀이 가능하다.

 

 

Java

public String getRandomCode(int length) {
  // alphaNum에 특수문자를 추가하여 커스텀이 가능하다.
    String alphaNum = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    int alphaNumLength = alphaNum.length();

    Random random = new Random();

    StringBuffer code = new StringBuffer();
    for (int i = 0; i < length; i++) {
      code.append(alphaNum.charAt(random.nextInt(alphaNumLength)));
    }

    return code.toString();
}

 

 

 

 

Postgresql

create or replace function get_random_string(length integer)
RETURNS character varying
LANGUAGE plpsql
as $function$
declare
  -- 중간 알파벳이 너무 길어서 생략함
  chars varchar[] : = '{0,1,2,3,4,5,6,7,8,9,A,B,C,D, ... ,X,Y,Z,a,b,c,d,,....x,y,z}'
  random_result varchar := '';
  i integer := 0;
begin
  for i in 1..length
    loop
        random_result := random_result || chars[1+random() * array_length(chars, 1)-1];
    end loop;
  return random_result;
end;
$function$
;

 

사용

select * from get_random_string(12);
-- ex) 결과 : R3afXyk0PTeu

 

728x90