ホームページ > データベース > mysql チュートリアル > ID に英数字テキストが含まれている場合に MySQL 行を数値的に並べ替えるにはどうすればよいですか?

ID に英数字テキストが含まれている場合に MySQL 行を数値的に並べ替えるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-28 10:40:12
オリジナル
806 人が閲覧しました

How to Sort MySQL Rows Numerically When IDs Contain Alphanumeric Text?

部分的に非数値テキストを数値に変換する 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート