ホームページ > データベース > mysql チュートリアル > MySQL で VARCHAR 数値を整数としてソートするにはどうすればよいですか?

MySQL で VARCHAR 数値を整数としてソートするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-12 18:36:47
オリジナル
138 人が閲覧しました

How Can I Sort VARCHAR Numbers as Integers in MySQL?

MySQL: VARCHAR 列を整数としてソートする

データベースは数値を文字列 (VARCHAR) として保存することがありますが、これは多くの場合、レガシー システムまたは外部依存関係が原因です。 これにより、標準の文字列比較を使用すると、不正な並べ替え結果が発生する可能性があります。 MySQL でこれらの文字列形式の数値を正しく並べ替える方法は次のとおりです:

最適なソリューション: データ型変換

最良の方法は、テーブル列のデータ型を整数 (INT、BIGINT など) に変更することです。これにより、適切な数値並べ替えが保証され、将来の問題が回避されます。

代替方法 (データ型の変更が不可能な場合):

  1. 明示的なキャスト: 並べ替えの前に、CAST() 関数を使用して VARCHAR 値を整数に明示的に変換します:
<code class="language-sql">SELECT col FROM yourtable ORDER BY CAST(col AS UNSIGNED);</code>
ログイン後にコピー

これにより、MySQL はソート処理中に値を数値として扱うようになります。 UNSIGNED は負の数の解釈を防ぎます。

  1. 暗黙的な変換: 数値定数 (0 など) を追加して、文字列値を暗黙的に数値に変換します:
<code class="language-sql">SELECT col FROM yourtable ORDER BY col + 0;</code>
ログイン後にコピー

MySQL は、文字列を加算操作の数値として解釈しようとし、暗黙的な変換をトリガーします。

  1. MySQL の文字列から数値への変換動作: MySQL は文字列を左から右に数値に変換することを思い出してください。 文字列の最初の数値部分のみが考慮されます。
String Value Integer Value
'1' 1
'ABC' 0
'123miles' 123
'3' 0

数字以外の文字は値 0 になります。 先頭に数字以外の文字があると、変換全体が失敗します。

以上がMySQL で VARCHAR 数値を整数としてソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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