MySQL에서 RAND() 함수를 활용하면 임의의 4자리 숫자를 손쉽게 생성할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, UPDATE 문으로 특정 컬럼에 무작위 4자리 숫자를 설정하는 과정을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 아래와 같이 테이블을 생성합니다.
mysql> create table DemoTable717 ( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, UserPassword int ); Query OK, 0 rows affected (0.81 sec)
2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable717(UserPassword) values(1454343); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable717(UserPassword) values(674654); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable717(UserPassword) values(989883); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable717(UserPassword) values(909983); Query OK, 1 row affected (0.15 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable717;
실행 결과는 다음과 같습니다.
+--------+--------------+ | UserId | UserPassword | +--------+--------------+ | 1 | 1454343 | | 2 | 674654 | | 3 | 989883 | | 4 | 909983 | +--------+--------------+ 4 rows in set (0.00 sec)
4. 임의의 4자리 숫자로 업데이트하기
다음은 UserPassword 컬럼에 임의의 4자리 숫자를 설정하는 쿼리입니다.
mysql> update DemoTable717 SET UserPassword=(select floor(0+ RAND() * 10000)); Query OK, 4 rows affected (0.22 sec) Rows matched: 4 Changed: 4 Warnings: 0
여기서 사용된 floor(0 + RAND() * 10000) 식은 0부터 9999 사이의 정수를 무작위로 반환합니다. 즉, RAND()가 0 이상 1 미만의 실수를 반환하므로 여기에 10000을 곱하고 소수점을 버리면 원하는 범위의 난수를 얻을 수 있습니다.
5. 업데이트 결과 확인하기
테이블의 레코드를 다시 한번 조회해 보겠습니다.
mysql> select *from DemoTable717;
실행 결과는 다음과 같습니다.
+--------+--------------+ | UserId | UserPassword | +--------+--------------+ | 1 | 4319 | | 2 | 3902 | | 3 | 6553 | | 4 | 1060 | +--------+--------------+ 4 rows in set (0.00 sec)
위 출력에서 확인할 수 있듯이, 모든 행의 UserPassword 값이 임의의 4자리 숫자로 변경되었습니다.
참고: 항상 정확히 4자리를 유지하려면?
위 방식은 0~999 범위의 숫자가 나올 경우 자릿수가 4자리보다 짧아질 수 있습니다. 만약 항상 정확히 4자리를 보장해야 한다면 다음 두 가지 방법을 고려할 수 있습니다.
- 범위 제한:
FLOOR(1000 + RAND() * 9000)을 사용하면 1000~9999 사이의 값만 생성됩니다. - 앞자리 0 채우기: 컬럼을 문자열 타입으로 사용한다면
LPAD(FLOOR(RAND() * 10000), 4, '0')처럼 LPAD 함수로 앞자리를 0으로 채울 수 있습니다.
이처럼 MySQL의 RAND() 함수를 응용하면 비밀번호 초기화 코드, 인증 번호 등 다양한 용도로 임의 숫자를 간편하게 생성할 수 있습니다.