>  기사  >  데이터 베이스  >  MySQL은 고정된 자릿수로 난수를 생성합니다.

MySQL은 고정된 자릿수로 난수를 생성합니다.

高洛峰
高洛峰원래의
2016-12-02 14:21:181680검색

프로젝트는 8자리, 5자리 등 고정된 자릿수의 난수를 동적으로 무작위로 생성해야 합니다.

전에 쓴 걸 보니 이렇습니다

ROUND(ROUND(RAND(),5)*100000)

이런 쓰는 방식은 그다지 정확하지는 않지만, 이 경우 Rand() 함수는 0~1(무한히 닫히는)을 취하는 랜덤함수입니다

특정 난수를 빼면 0.05321

, 변환된 숫자는 5321로 4자리만 있습니다.

값을 받아보고 자릿수가 틀린 것을 발견하면 그냥 함수로 마무리하면 딱 좋을 것 같습니다.

다음은 제가 수정한 함수인데, 생성되는 함수의 개수가 20자리를 넘을 수 없다는 것이 단점입니다. 물론 변경할 수 있습니다.

DELIMITER $$

`prvecard`$$ 사용

`getRand`$$가 존재하는 경우 삭제 기능

CREATE DEFINER=`PECARD`@` %` FUNCTION `getRand`(counts INTEGER) RETURNS VARCHAR(20) CHARSET utf8
BEGIN
​​​​DECLARE sTemp VARCHAR(20);
DECLARE sTempCounts INTEGER;
SET sTemp = CONCAT( RO UND (ROUND( RAND(), 개수)*(POW (10, 개수))),); );
SET sTemp = CONCAT(sTemp, RIGHT(CONCAT(POW(10,sTempCounts),),sTempCounts)) ;
END IF;

RETURN sTemp;
END$$

DELIMITER ;

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.