MySQL での並べ替えのために、部分的に数値以外のテキストを数値に変換する
MySQL では、数値を含むテキストを数値に変換できます。仕分けの目的で。 「名前-番号」形式の識別子を持つテーブル列があり、その列がアルファベット順に並べ替えられているため、数値コンポーネントに基づいた順序が正しくなくなるというシナリオを考えてみましょう。
この問題に対処するには、次のことが必要です。文字列操作関数と変換関数を組み合わせて利用して、テキストの数値部分を抽出および変換できます。これには、SUBSTRING_INDEX 関数を使用して、ハイフン '-' 以降の文字列の最後の部分を抽出し、CONVERT 関数を使用してそれを符号なし整数 (UNSIGNED INTEGER) に変換することが含まれます。これを実現するクエリを以下に示します。
SELECT field,CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num FROM table ORDER BY num;
このクエリは、「field」列のハイフン以降の数値部分を抽出し、それを整数に変換して、「num」列に割り当てます。次に、テーブルは「num」列で並べ替えられ、同じ名前のプレフィックスを持つ行の正しい数値順序が保証されます。
このソリューションでは、識別子の数値部分が常に存在することを前提としていることに注意してください。そして一貫したフォーマットを持っています。名前に数字が含まれない場合は、そのような場合に対処するために追加のチェックや変更が必要になる場合があります。
以上が部分的に数値テキスト値を含む MySQL テーブルの列を正しくソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。