MySQL のエレガントな自然ソート
MySQL では、数字と文字を含む文字列を論理的に並べ替えることが難しい場合があります。次のデータセットの例を考えてみましょう:
<code>最终幻想 最终幻想4 最终幻想10 最终幻想12 最终幻想12:普罗米西亚的锁链 最终幻想冒险 最终幻想起源 最终幻想战术</code>
ファイナルファンタジー 10 がファイナルファンタジー 2 の前ではなくファイナルファンタジー 4 の後に表示されるように自然な順序を実現するにはどうすればよいですか?
エレガントなソリューション
ゲーム名をその構成部分 (タイトル、番号、サブタイトル) に手動で解析する代わりに、次の簡単な解決策を試してください:
<code class="language-sql">SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric;</code>
次のように動作します:
LENGTH()
関数は、各英数字フィールドの文字数をカウントします。 ORDER BY
句は、最初に行を長さの昇順に並べ替えます。これにより、同じ文字数の行が効果的にグループ化されます。 この方法は、数字とテキストを含むゲーム タイトルをシームレスに処理し、要件を満たす自然な順序を保証します。手動で解析する手間が省け、「ウォーハンマー 40,000」や「ジェームズ ボンド 007」のような例外を処理する場合でも同様に堅牢です。
以上がMySQL はどのようにして英数字文字列の自然な並べ替えを実現できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。