部分的に非数値テキストを数値に変換する MySQL クエリ
MySQL では、非数値テキストから数値部分を抽出することができます適切な並べ替えを可能にするために、それを数値データ型に変換します。
「名前-番号」の形式で名前と番号を組み合わせた識別子を含む列の場合。デフォルトの文字順序を使用してこの列に基づいて行を並べ替えると、望ましくない順序になります:
name-1 name-11 name-12 name-2
この問題を解決するには、SUBSTRING_INDEX() 関数を使用してテキストから数値部分を抽出できます:
SUBSTRING_INDEX(field,'-',-1)
この関数は、「-」文字が最後に出現した後の部分文字列を抽出し、数値を効果的に分離します。
次に、CONVERT() 関数を使用して、抽出した部分文字列を符号なし整数に変換できます。
CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num
このステップでは、文字列を数値データ型に変換します。数値比較に使用されます。
最後に、ORDER BY 句を使用して、抽出および変換されたデータに基づいて行を並べ替えることができます。数値部分:
ORDER BY num
このクエリは、希望する並べ替え順序を生成する必要があります:
name-1 name-2 name-11 name-12
このアプローチでは、識別子の非数値部分には数値が含まれないことを前提としていることに注意してください。これが保証されていない場合は、より複雑な文字列操作テクニックを使用する必要がある可能性があります。
以上がID に英数字テキストが含まれている場合に MySQL 行を数値的に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。