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))
この手法は、INET_ATON 関数を利用して、IP アドレスを表す文字列を数値表現に変換します。 。 '.0.0.0' を version_number に連結することで、各バージョン番号に少なくとも 4 つのコンポーネントが含まれていることを確認し、SUBSTRING_INDEX を利用して抽出します。
最初の 4 つのコンポーネントの数値表現に基づいて並べ替えることにより、バージョン番号ごとに、希望の並べ替え順序が得られます。ただし、この並べ替えは関数に依存しているため、インデックスを使用して列を直接並べ替える場合と比較してパフォーマンスが低下する可能性があることに注意してください。
@spanky によって提案された別の解決策では、バージョン番号コンポーネントを次のように分割します。個々の列。たとえば、メジャー、マイナー、パッチ、ビルド バージョンの列を作成します。このアプローチにより、特定のコンポーネントを効率的に並べ替えることができますが、より複雑なデータ操作が必要になる場合があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3