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
'백엔드' 카테고리의 다른 글
[Java] 2. Garbage Collection - GC의 과정 및 종류 (0) | 2022.06.24 |
---|---|
[Java] 1. Garbage Collection이란? GC의 핵심 및 과정 (0) | 2022.06.24 |
[Spring] Spring MVC 구조 - Dispatcher Servlet 이란? (0) | 2022.02.04 |
[Java] equals()와 ==의 차이점(feat: String str=""와 new String("")의 차이점) (0) | 2022.02.03 |
[Java] Generic이란? Generic class Class field 가져오기, 동적 메소드 실행 (0) | 2021.10.01 |
댓글