【MySQL】乱数やランダム文字列の取得、ハッシュ化する方法


ここではMySQLで、乱数(ランダムな値)を取得する方法と値や文字列をハッシュ化する方法を紹介しています。

RAND関数:乱数の取得

ランダムな値を取得するにはRAND関数を使います。

RAND関数はランダムな浮動小数点を返します。MD5関数は引数を32桁の16進数として返します。

RAND関数をそのまま使うと次のような結果になります。

mysql> SELECT RAND();
+--------------------+
| RAND()             |
+--------------------+
| 0.8037194654380153 |
+--------------------+
1 row in set (0.00 sec)

FLOOR関数やCEIL関数と組み合わせて、整数値を求めることが出来ます。

次のSQLでは、1~10の整数をランダムで求めることが出来ます。

SELECT FLOOR(RAND()*11);
または
SELECT CEIL(RAND()*10);

・FLOOR
 引数以下のもっとも大きな整数値を返す
・CEIL
 引数以上のもっとも小さな整数値を返す

RAND&MD5関数

ランダム文字列を作成するには、RAND関数とMD5関数を組み合わせます。

RAND関数はランダムな浮動小数点を返します。MD5関数は引数を32桁の16進数として返します。

次のSQLでは、10桁のランダムな文字列を返します。

mysql> SELECT SUBSTRING(MD5(RAND()),1,10);
+-----------------------------+
| SUBSTRING(MD5(RAND()),1,10) |
+-----------------------------+
| ebfc1a308f                  |
+-----------------------------+
1 row in set (0.00 sec)

SHA関数:ハッシュ化

列の値や文字列をハッシュ化するには、SHA関数が使えます。

SHA関数では引数に指定した文字列から、文字列のSHA-1 160 ビットチェックサムを計算し、40 桁の 16 進数の文字列として返します。

SHA関数の基本的な使い方は次の通りです。

SHA1(文字列)
または
SHA(文字列)

実際に実行してみると次のような結果が返ってきます。

mysql> SELECT SHA1('a');
+------------------------------------------+
| SHA1('a')                                |
+------------------------------------------+
| 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 |
+------------------------------------------+
1 row in set (0.00 sec)

MD5関数:ハッシュ化

列の値や文字列をハッシュ化するには、MD5関数が使えます。

MD5関数では引数に指定した文字列から、文字列の MD5 128 ビットチェックサムを計算し、32 桁の 16 進数の文字列として返します。

MD5関数の基本的な使い方は次の通りです。

mysql> SELECT MD5('a');
+----------------------------------+
| MD5('a')                         |
+----------------------------------+
| 0cc175b9c0f1b6a831c399e269772661 |
+----------------------------------+
1 row in set (0.00 sec)