MySQL でランダムで一意の文字列を生成する
今日は、さまざまな関数を使用して、MySQL でランダムで一意の文字列を生成する方法を学びます。これらの関数には、MD5()、RAND()、SUBSTR()、および UUID() が含まれます。
MySQL にランダムな文字列を生成する組み込みの方法はありませんが、要件を満たすために利点を得ることができる他の多くの方法があります。ここでは、MySQL でランダムで一意の文字列を生成するための最も簡単で効率的な方法について学習します。
MySQL でランダムで MD5()、RAND()、および SUBSTR() を使用して一意の文字列を生成する
サンプルコード:
SELECT SUBSTR(MD5(RAND()),1,8) AS RandomString;
出力:
+--------------+
| RandomString |
+--------------+
| 7d192f5f |
+--------------+
1 row in set (0.00 sec)
MD5() 関数は、引数の 128 ビットのチェックサム表現を生成しました。上記の例では、RAND() 関数によって生成される値は、MD5() 関数の引数です。RAND() 関数はランダムな値を生成しました。
ただし、チェックサムの結果は、MD5() 関数に渡された引数から生成された 32 個の英数字です。さらに、プロジェクトの要件に従って、SUBSTR() を使用して MD5 文字列の一部を削除しました。
SUBSTR() は、文字列、抽出の開始位置、および長さの 3つのパラメーターを取ります。上記のサンプルコードでは、最初の文字から開始し、MD5 文字列から 8 文字の文字列を抽出しました。
MySQL でランダムで UUID() を使用して一意の文字列を生成する
サンプルコード:
SELECT LEFT(UUID(), 8)
出力:
+-----------------+
| LEFT(UUID(), 8) |
+-----------------+
| 4a1f35bc |
+-----------------+
1 row in set (0.00 sec)
MySQL で 8 文字の文字列を生成する別の方法は、上記のように LEFT(UUID(),8) です。RFC 4122(Universally Unique Identifier URN Namespace)は、128 ビット長の値である UUID()(Universal Unique Identifier)を指定しました。
時間と空間に応じてグローバルに一意の値を生成します。UUID() によって生成される値は一意であるため、予測または推測することはできません。
これは、UUID() が常にランダムな値を生成することを意味します。次のクエリを使用して、8 文字または 10 文字の長さの文字列を取得できます。
サンプルコード:
-- for 8 characters long string
SELECT LEFT(UUID(),8) random_string ;
-- for 10 characters long string
SELECT RIGHT(UUID(),10) random_string ;
UUID() は、ハイフンで区切られた 5つのセクションで構成される 16 進値を出力することを忘れないでください。したがって、必要な文字列の長さに応じて、数字、ハイフン、およびアルファベットを含む文字列を取得できます。
サンプルコード:
SELECT UUID(), LEFT(UUID(), 8), right(uuid(),20);
出力:
+--------------------------------------+-----------------+----------------------+
| UUID() | LEFT(UUID(), 8) | right(uuid(),20) |
+--------------------------------------+-----------------+----------------------+
| b3e73af1-d811-11ec-b138-d8d09042fdaa | b3e73b03 | ec-b138-d8d09042fdaa |
+--------------------------------------+-----------------+----------------------+
1 row in set (0.00 sec)
