MySQL에서 6자리 난수를 생성하려면 LPAD() 함수와 RAND(), FLOOR() 함수를 함께 사용하면 됩니다. LPAD()는 생성된 숫자가 6자리보다 짧을 경우 앞부분을 '0'으로 채워 항상 6자리를 유지해 주는 역할을 합니다. 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable ( Value int ); Query OK, 0 rows affected (0.64 sec)
2단계: 레코드 삽입
insert 명령어를 사용하여 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable values(1); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(2); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(3); Query OK, 1 row affected (0.24 sec) mysql> insert into DemoTable values(4); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(5); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(6); Query OK, 1 row affected (0.19 sec)
3단계: 전체 레코드 조회
select 문을 사용하여 테이블의 모든 레코드를 확인합니다.
mysql> select * from DemoTable;
실행 결과는 다음과 같습니다.
+-------+ | Value | +-------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | +-------+ 6 rows in set (0.00 sec)
4단계: 6자리 난수 생성 쿼리 실행
다음은 MySQL에서 6자리 난수를 생성하는 핵심 쿼리입니다.
mysql> update DemoTable set Value=LPAD(FLOOR(RAND() * 999999.99), 6, '0'); Query OK, 6 rows affected (0.15 sec) Rows matched: 6 Changed: 6 Warnings: 0
여기서 FLOOR(RAND() * 999999.99)는 0부터 999999 사이의 정수를 무작위로 생성하고, LPAD(..., 6, '0')는 결과값이 6자리 미만일 경우 앞부분을 0으로 채워 항상 6자리 숫자가 되도록 만들어 줍니다.
5단계: 업데이트된 레코드 확인
업데이트된 레코드를 다시 조회해 보겠습니다.
mysql> select * from DemoTable;
실행 결과는 다음과 같습니다.
+--------+ | Value | +--------+ | 499540 | | 550607 | | 254419 | | 620272 | | 338104 | | 829705 | +--------+ 6 rows in set (0.00 sec)
이처럼 LPAD(), RAND(), FLOOR() 세 가지 함수를 조합하면 MySQL에서 손쉽게 6자리 난수를 생성할 수 있습니다. 이 방법은 인증 코드, 임시 비밀번호, 주문 번호 등을 자동으로 생성해야 하는 상황에서 특히 유용하게 활용됩니다.