ホームページ  >  記事  >  データベース  >  Mysql は固定桁数の乱数を生成します

Mysql は固定桁数の乱数を生成します

高洛峰
高洛峰オリジナル
2016-12-02 14:21:181679ブラウズ

プロジェクトでは、8 桁、5 桁などの固定桁数の乱数を動的かつランダムに生成する必要があります。

以前見た書き方はこんな感じです

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

この書き方はあまり正確ではありません The Rand() の可能性があります。関数は 0 ~ 1 (無限に近い) のランダム関数を受け取ります

ある乱数を取り出した場合、それが 0.05321

このように変換された結果は 5321 となり、4 桁しかありません。

値を取得して桁数が間違っていることがわかったら、その桁を埋めるだけで関数でラップできれば完璧です。

以下は私が変更した関数ですが、生成された関数は20桁を超えることができないという欠点があります。もちろん、変更することもできます。

DELIMITER $$

USE `prvecard`$$

DROP FUNCTION IF EXISTS `getRand`$$

CREATE DEFINER=`PECARD`@`%` FUNCTION `getRand`(counts INTEGER) RETURNS VARCHAR(20) CHARSET utf8
BEGIN
DECLARE sTemp VARCHAR(20);
DECLARE sTempCounts INTEGER; IF(CHAR_LENGTH (sTemp)
SET sTempCounts = counts - CHAR_LENGTH(sTemp);
SET sTemp = CONCAT(温度, RIGHT(CONCAT (POW(10,sTempCounts),),sTempCounts));
END IF;

RETURN sTemp;
END$$

DELIMITER ;

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。