반응형
해당 글에서는 SQL 함수를 이용하여 주어진 문자열 내에서 랜덤 한 문자열을 반환하는 방법에 대해 알아봅니다.
1) 문자열 내의 랜덤한 하나의 문자 반환
💡 문자열 내의 랜덤한 하나의 문자 반환
- 파라미터로 전달받은 문자열 내에서 랜덤한 하나의 문자를 반환하는 함수를 구성해 봅니다.
💡 f_rand1
- 문자열 중에서 하나의 단어를 랜덤으로 반환해 주는 함수입니다.
1. 파라미터로 받은 값(_str)의 길이를 반환하는 변수(v_len)를 선언합니다.
2. 결과값(v_ret)으로 substring 함수를 통해 파라미터로 받은 값을 rand() 함수를 통해서 하나의 값만 반환받습니다.
3. 최종결과값(v_ret)을 반환합니다.
변수/파라미터 명 | 분류 | 타입 | 설명 |
_str | 파라미터 | VARCHAR(255) | 하나의 랜덤한 문자열을 반환 받기 위해 랜덤한 문자열 파라미터 |
v_len | 변수 | VARCHAR(31) | 문자열의 길이를 반환받는 변수 |
v_ret | 변수 | VARCHAR(31) | 최종 결과값을 반환하는 변수 |
CREATE DEFINER=`localmaster`@`localhost` FUNCTION `f_rand1`(_str VARCHAR(255)) RETURNS VAHRCAHR(31) CHARSET utf8mb4
BEGIN
DECLARE v_ret VARCHAR(31);
DECLARE v_len TINYINT;
-- 파라미터로 받은 값(_str)의 길이를 반환하는 변수(v_len)를 선언합니다.
SET v_len = CHAR_LENGTH(_str);
-- 결과값(v_ret)으로 substring 함수를 통해 파라미터로 받은 값을 rand() 함수를 통해서 하나의 값만 반환받습니다.
SET v_ret = SUBSTRING(_str, CEIL(RAND() * v_len), 1);
-- 최종결과값(v_ret)을 반환합니다.
RETURN v_ret;
END
💡 수행결과
2) 문자열 내에 랜덤 한 여러개의 문자 반환
💡문자열 내에 랜덤한 여러개의 문자 반환
- 파라미터로 문자열과 추출하려는 개수를 받아서 랜덤한 문자열을 반환받는 함수를 구성해 봅니다.
💡 f_randN
1. 파라미터로 받은 값(_str)의 길이를 반환하는 변수(v_len)를 선언합니다.
2. _n 번 반복하며 랜덤 한 문자를 추출합니다.
3. 최종결과값(v_ret)을 반환합니다.
변수/파라미터 명 | 분류 | 타입 | 설명 |
_str | 파라미터 | VARCHAR(255) | 랜덤한 문자열을 반환 받기 위해 랜덤한 문자열 파라미터 |
_n | 파라미터 | INT | 랜덤한 문자열에서 추출하려는 개수 파라미터 |
v_len | 변수 | VARCHAR(31) | 문자열의 길이를 반환받는 변수 |
v_ret | 변수 | VARCHAR(31) | 최종 결과값을 반환하는 변수 |
CREATE DEFINER=`localmaster`@`localhost` FUNCTION `f_randN`(_str VARCHAR(255), _n INT) RETURNS VARCHAR(255) CHARSET utf8mb4
BEGIN
DECLARE v_ret VARCHAR(255) DEFAULT '';
DECLARE v_len TINYINT;
DECLARE i INT DEFAULT 0;
-- 1. 파라미터로 받은 값(_str)의 길이를 반환하는 변수(v_len)를 선언합니다.
SET v_len = CHAR_LENGTH(_str);
-- 2. _n 번 반복하며 랜덤한 문자를 추출합니다.
WHILE i < _n DO
SET v_ret = CONCAT(v_ret, SUBSTRING(_str, CEIL(RAND() * v_len), 1));
SET i = i + 1;
END WHILE;
-- 최종결과값(v_ret)을 반환합니다.
RETURN v_ret;
END
💡 수행결과
3) 랜덤 이름 추출 방법
💡랜덤 이름 추출 방법
- 함수 내에 성, 이름으로 사용되는 문자들을 정의하여 랜덤으로 추출하여 최종 하나의 이름으로 구성하는 함수를 구성해 봅니다.
💡 f_randname()
1. 이름이 들어가는 단어들(f_firsts) 변수와 성이 들어가는 단어들(v_lasts) 변수를 정의합니다.
2. f_rand1() 함수를 이용하여 이름(f_firsts), 성(v_lasts)의 하나의 값을 뽑습니다.
3. v_ret 결과값 변수에 하나씩 뽑은 값을 concat() 함수를 통해 조합하여 이름을 생성합니다.
4. 결과를 반환합니다.
변수/파라미터 명 | 분류 | 타입 | 설명 |
v_ret | 변수 | VARCHAR(31) | 최종 결과값을 반환하는 변수 |
v_firsts | 변수 | VARCHAR(255) | 이름에 들어갈 만한 문자들을 가지고 있는 변수 |
v_lasts | 변수 | VARCHAR(255) | 성으로 사용될만한 문자들을 가지고 있는 변수 |
CREATE DEFINER=`localmaster`@`localhost` FUNCTION `f_randname`() RETURNS VARCHAR(31) CHARSET utf8mb4
DETERMINISTIC
BEGIN
-- 이름이 들어가는 단어들(f_firsts)변수와 성이 들어가는 단어들(v_lasts)변수를 정의합니다.
DECLARE v_ret VARCHAR(31);
DECLARE v_firsts VARCHAR(255) DEFAULT '이준시우서준하준도윤은우지호이안선우서아하윤아지안아윤시아서윤아린';
DECLARE v_lasts VARCHAR(255) DEFAULT '김이박최정강조윤장임';
-- f_rand1() 함수를 이용하여 이름(f_firsts), 성(v_lasts)의 하나의 값을 뽑습니다.
-- v_ret 결과값 변수에 하나씩 뽑은 값을 concat() 함수를 통해 조합하여 이름을 생성합니다.
SET v_ret = CONCAT(f_rand1(v_lasts), f_rand1(v_firsts), f_rand1(v_firsts));
-- 결과를 반환합니다.
RETURN v_ret;
END
💡 결과화면
오늘도 감사합니다. 😀
반응형
'DB > Short SQL문' 카테고리의 다른 글
[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 |
[DB/Short] MySQL - 문자열 대소문자 구분/구분하지 않고 정렬하기 : BINARY (0) | 2023.10.04 |