MySQL: VARCHAR 列を整数としてソートする
データベースは数値を文字列 (VARCHAR) として保存することがありますが、これは多くの場合、レガシー システムまたは外部依存関係が原因です。 これにより、標準の文字列比較を使用すると、不正な並べ替え結果が発生する可能性があります。 MySQL でこれらの文字列形式の数値を正しく並べ替える方法は次のとおりです:
最適なソリューション: データ型変換
最良の方法は、テーブル列のデータ型を整数 (INT、BIGINT など) に変更することです。これにより、適切な数値並べ替えが保証され、将来の問題が回避されます。
代替方法 (データ型の変更が不可能な場合):
CAST()
関数を使用して VARCHAR 値を整数に明示的に変換します:<code class="language-sql">SELECT col FROM yourtable ORDER BY CAST(col AS UNSIGNED);</code>
これにより、MySQL はソート処理中に値を数値として扱うようになります。 UNSIGNED
は負の数の解釈を防ぎます。
<code class="language-sql">SELECT col FROM yourtable ORDER BY col + 0;</code>
MySQL は、文字列を加算操作の数値として解釈しようとし、暗黙的な変換をトリガーします。
String Value | Integer Value |
---|---|
'1' | 1 |
'ABC' | 0 |
'123miles' | 123 |
'3' | 0 |
数字以外の文字は値 0 になります。 先頭に数字以外の文字があると、変換全体が失敗します。
以上がMySQL で VARCHAR 数値を整数としてソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。