MySQL バージョン番号の並べ替え
MySQL でバージョン番号を varbinary(300) として保存する場合、version_number によるデフォルトの順序を使用して並べ替えると、結果が得られる場合があります。間違った結果。これを解決するには、並べ替えを容易にする INET_ATON 関数の利用を検討してください。
変更されたクエリ:
SELECT version_number FROM table ORDER BY INET_ATON(SUBSTRING_INDEX(CONCAT(version_number,'.0.0.0'),'.',4))
この手法は、IP アドレスを表す文字列を数値に変換する INET_ATON 関数に依存しています。表現。 '.0.0.0' を version_number に連結することで、各バージョン番号に少なくとも 4 つのコンポーネントが含まれていることを確認し、SUBSTRING_INDEX を利用して抽出します。
最初の 4 つのコンポーネントの数値表現に基づいて並べ替えることにより、バージョン番号ごとに、希望の並べ替え順序が得られます。ただし、この並べ替えは関数に依存しているため、インデックスを使用して列を直接並べ替える場合と比較してパフォーマンスが低下する可能性があることに注意してください。
@spanky によって提案された別の解決策には、バージョン番号コンポーネントを分割することが含まれます。個々の列。たとえば、メジャー、マイナー、パッチ、ビルド バージョンの列を作成します。このアプローチにより、特定のコンポーネントを効率的に並べ替えることができますが、より複雑なデータ操作が必要になる場合があります。
以上が「varbinary(300)」として保存されている MySQL バージョン番号をソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。