MySQL で一意の 8 文字のランダムな文字列を生成します
MySQL データベースの車両テーブル (vehicles
) に固有の 8 文字の英数字のナンバー プレート番号を効率的に生成するにはどうすればよいですか?この記事では、いくつかのオプションについて説明します。
解決策の 1 つは、一意の値が見つかるまで生成とチェックをループすることです。ただし、この方法は、特に車両の数が増えると効率が低下します。
もう 1 つのより効率的な解決策は、MySQL 組み込み関数 UUID()
を LEFT()
関数と組み合わせて使用することです。 UUID()
擬似ランダム UUID を生成し、LEFT()
関数はその最初の 8 文字をインターセプトします。この方法は比較的効率的ですが、生成される文字列は完全にランダムではなく、特定の順序を持つ場合があります。
次の疑似コードは、このメソッドを示しています:
<code class="language-sql">DO SELECT LEFT(UUID(), 8) INTO @plate; INSERT INTO plates (@plate); WHILE there_is_a_unique_constraint_violation -- @plate 即为新生成的唯一车牌号</code>
ランダム性を高めるために、MD5(RAND())
の代わりに RANDOM_BYTES()
または UUID()
を使用することをお勧めします。 RANDOM_BYTES()
関数は、よりランダムなバイト シーケンスを生成し、それを英数字文字列に変換できるため、ランダム性と一意性が向上します。
上記の方法により、開発者は MySQL データベース内の車両に一意でランダムな 8 文字の文字列のナンバー プレート番号を効果的に生成でき、各車両が一意の ID を持つことが保証されます。
以上がMySQL で固有の 8 文字の英数字文字列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。