반응형
해당 글에서는 SQL Function을 구성하여 랜덤한 숫자를 반환하는 방법에 대해 알아봅니다.
1) 종료 범위만 존재하는 숫자 반환
💡 종료 범위만 존재하는 숫자 반환
- 1에서부터 시작해서 최대범위를 지정하는 랜덤 숫자를 만드는 함수를 구성합니다.
변수/파라미터 명 | 분류 | 타입 | 설명 |
_range | 파라미터 | INT | 랜덤한 숫자의 최대 범위를 지정하는 파라미터 |
v_ret | 변수 | INT | 최종 결과값을 반환하는 변수 |
💡 함수 설명
1. v_ret 결과값 내에 rand() 함수를 통해 랜덤 한 숫자를 반환받아 종료 범위를 곱한 뒤 최종 1을 더합니다.
(* 1을 더하는 이유는 0의 값이 나오는 경우 최소값 1을 유지하기 위해 더 합니다)
CREATE FUNCTION `f_randscore1` (_range int)
RETURNS INT
BEGIN
DECLARE v_ret INT;
-- 1. v_ret 결과값 내에 rand() 함수를 통해 랜덤한 숫자를 반환 받아 종료 범위를 곱한 뒤 최소값 지정을 위해 최종 1을 더합니다.
SET v_ret = FLOOR(RAND() * _range) + 1;
RETURN v_ret;
END
[ 더 알아보기 ]
💡RAND() 함수
- 0과 1사이의 난수를 생성하는 함수입니다.
💡 결과 화면
2) 시작범위, 종료범위가 존재하는 랜덤 숫자 반환
💡 시작범위, 종료범위가 존재하는 랜덤 숫자 반환
- 시작 범위와 종료 범위를 지정하여 해당 범위 내의 랜덤 숫자를 만드는 함수를 구성합니다.
💡 f_randscore2
- 'start + RAND() * (end - start + 1)' 식을 사용하여 랜덤 한 소수를 생성한 다음, 이를 'FLOOR' 함수를 사용하여 가장 가까운 낮은 정수로 반올림합니다.
변수/파라미터 명 | 분류 | 타입 | 설명 |
_endscope | 파라미터 | INT | 랜덤한 숫자의 최대 범위를 지정하는 파라미터 |
_startscope | 파라미터 | INT | 랜덤한 숫자의 최소 범위를 지정하는 파라미터 |
v_ret | 변수 | INT | 최종 결과값을 반환하는 변수 |
CREATE DEFINER=`localmaster`@`localhost` FUNCTION `f_randscore2`(_startscope int, _endscope int) RETURNS int
BEGIN
DECLARE v_ret INT;
-- v_ret 결과값 내에 'start + RAND() * (end - start + 1)' 식을 사용하여 랜덤한 소수를 생성한 다음, 이를 'FLOOR' 함수를 사용하여 가장 가까운 낮은 정수로 반올림합니다.
SET v_ret = FLOOR(_startscope + RAND() * (_endscope - _startscope + 1));
RETURN v_ret;
END
💡 수행결과
오늘도 감사합니다. 😀
반응형
'DB > Short SQL문' 카테고리의 다른 글
[MySQL/Short] 날짜(일자/시간) 컬럼 범위 조회하기 : YEAR, MONTH, DAY, DATE, HOUR, MINUTE, SECOND, TIME (0) | 2024.05.26 |
---|---|
[DB/Short] MySQL SQL Function : 문자열 내에 랜덤 문자열 추출하기 (0) | 2024.04.08 |
[DB/Short] MySQL SQL Function : 랜덤 문자, 랜덤 이름 만들기 (0) | 2024.04.08 |
[DB/Short] MySQL : 집계함수로 얻은 값을 조건절에서 사용하는 경우 -서브쿼리, HAVING (1) | 2023.10.05 |
[DB/Short] MySQL: DATETIME ↔ DATE 타입 간의 변환 방법 (0) | 2023.10.05 |