次を使用して、MySQLで36文字のランダムな文字列を生成しようとしています。
UPDATE my_table SET entity_uid = substring(MD5(RAND()) FROM 1 FOR 36);
ただし、結果は常に32文字の文字列になります。より長い文字列を取得する方法はありますか?
次を使用して、MySQLで36文字のランダムな文字列を生成しようとしています。
UPDATE my_table SET entity_uid = substring(MD5(RAND()) FROM 1 FOR 36);
ただし、結果は常に32文字の文字列になります。より長い文字列を取得する方法はありますか?
1つのオプションは、2つのMD5ハッシュを生成し、それらを連結して(合計64の16進文字)、その最初の36文字を取得することです。
SELECT SUBSTR(CONCAT(MD5(RAND()),MD5(RAND())),1,36)
(注:MD5ハッシュは128ビットです。MySQLMD5()関数は32桁の16進文字を返します。)
5.7.4以降のバージョンでMySQLを使用する場合は、新しく追加されたRANDOM_BYTES関数を使用できます。
SELECT TO_BASE64(RANDOM_BYTES(40));
これにより、などのランダムな文字列が生成されr633j3sfgE85f3Jz+3AEx6Xo6qPXPUZruNimhId18iy+J1qOgZyCgg==
ます。
MD5ハッシュを32文字の16進数として返します。
MySQLによると
文字列のMD5128ビットチェックサムを計算します。値は32桁の16進数の文字列として返され、引数がNULLの場合はNULLが返されます。戻り値は、たとえば、ハッシュキーとして使用できます。ハッシュ値を効率的に保存する方法については、このセクションの冒頭にある注記を参照してください。
UPDATE my_table SET entity_uid = UUID();