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中文网其他相关文章!