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

MySQL에서 임의의 4자리 숫자를 생성하는 방법

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() 함수를 응용하면 비밀번호 초기화 코드, 인증 번호 등 다양한 용도로 임의 숫자를 간편하게 생성할 수 있습니다.