ホームページ > データベース > mysql チュートリアル > 「name-number」文字列を含む MySQL 列を数値的にソートするにはどうすればよいですか?

「name-number」文字列を含む MySQL 列を数値的にソートするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-30 19:22:10
オリジナル
224 人が閲覧しました

How Can I Sort a MySQL Column Containing

MySQL クエリの並べ替えのために数値以外の部分テキストを数値に変換する

MySQL では、埋め込まれた数値に基づいて varchar 列を並べ替えるのが困難な場合があります。この質問は、列に「名前-番号」形式の識別子が含まれており、数値コンポーネントに基づいて並べ替える必要があるという実際的なシナリオを扱います。

問題:

この列には、「名前-番号」形式のテキストが含まれており、テキスト内に数値コンポーネントが埋め込まれています。デフォルトの文字順序を使用して列を並べ替えると、文字の比較により順序が不正確になります。

解決策:

これを解決するには、非-数値テキストを並べ替える前に数値に変換します。次のクエリでこれを実現できます。

SELECT field,CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num
FROM table
ORDER BY num;
ログイン後にコピー

説明:

  • SUBSTRING_INDEX(field,'-',-1): から数値コンポーネントを抽出します。識別子のテキストをハイフン (-) で分割し、最後の文字列を返します。 substring.
  • CONVERT(): 抽出された部分文字列を符号なし整数に変換し、数値的に比較および並べ替えできるようにします。
  • ORDER BY num: 変換された数値に基づいて結果を並べ替えます。 value.

追加の考慮事項:

  • 不正な数値変換を避けるために、識別子の名前部分には数値が含まれていないと想定されます。
  • 名前の部分に数字が含まれる可能性がある場合は、より複雑な正規表現を使用して文字列を抽出する必要があります。数値コンポーネントを正確に返します。

以上が「name-number」文字列を含む MySQL 列を数値的にソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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