Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 고유한 랜덤 10자 문자열 생성하는 방법

MySQL에서 10자리 무작위 문자열을 생성하려면 내장 함수인 rand()char()를 활용할 수 있습니다. rand()는 0과 1 사이의 난수를 반환하고, char()는 숫자에 해당하는 ASCII 코드 문자를 출력합니다. 이 두 함수를 조합하면 알파벳 소문자(a~z) 또는 대문자(A~Z)로 구성된 랜덤 문자열을 손쉽게 만들 수 있습니다.

소문자 랜덤 10자 문자열 생성

ASCII 코드에서 소문자 'a'는 97부터 시작하여 'z'는 122까지입니다. 따라서 rand()*25에 반올림한 값에 97을 더하면 97~122 범위의 숫자가 만들어집니다. 아래 쿼리는 소문자로 구성된 랜덤 10자 문자열을 생성합니다.

mysql> SELECT concat(
-> char(round(rand()*25)+97),
-> char(round(rand()*25)+97),
-> char(round(rand()*25)+97),
-> char(round(rand()*25)+97),
-> char(round(rand()*25)+97),
-> char(round(rand()*25)+97),
-> char(round(rand()*25)+97),
-> char(round(rand()*25)+97),
-> char(round(rand()*25)+97),
-> char(round(rand()*25)+97)
-> ) AS Random10CharacterString;

실행 결과는 다음과 같습니다.

+-------------------------+
| Random10CharacterString |
+-------------------------+
| duscikyspy |
+-------------------------+
1 row in set (0.00 sec)

대문자 랜덤 10자 문자열 생성

대문자를 원한다면 ASCII 코드 기준을 변경하면 됩니다. 대문자 'A'는 65부터 'Z'는 90까지이므로, rand()*25에 반올림한 값에 65를 더해주면 됩니다. 아래는 대문자 랜덤 문자열을 생성하는 쿼리입니다.

mysql> SELECT concat(
-> char(round(rand()*25)+65),
-> char(round(rand()*25)+65),
-> char(round(rand()*25)+65),
-> char(round(rand()*25)+65),
-> char(round(rand()*25)+65),
-> char(round(rand()*25)+65),
-> char(round(rand()*25)+65),
-> char(round(rand()*25)+65),
-> char(round(rand()*25)+65),
-> char(round(rand()*25)+65)
-> ) AS Random10CharacterString;

실행 결과는 다음과 같습니다.

+-------------------------+
| Random10CharacterString |
+-------------------------+
| WMWWVOIXPF |
+-------------------------+
1 row in set (0.00 sec)

참고 사항

이 방식은 각 자리마다 rand()가 독립적으로 호출되므로 실행할 때마다 완전히 새로운 문자열이 생성됩니다. 대소문자를 섞어서 사용하고 싶다면 일부 자리에는 +97(소문자), 일부 자리에는 +65(대문자)를 적용하면 됩니다. 또한 숫자를 포함하고 싶은 경우에는 ASCII 코드 48~57 범위를 활용해 char(round(rand()*9)+48) 형태로 추가할 수 있습니다. 임시 토큰, 테스트 데이터 생성 등 다양한 용도로 응용해 보세요.