我有存储为字符数的一列。当我做一个ORDER BY这个专栏中,我得到如下:

100结果 131个结果 200个结果 21个结果 30个结果 31000次点击 等

我怎样才能订购这些字符数字?我需要的东西转换或者是已经有一个SQL命令或功能呢?

感谢您。

有帮助吗?

解决方案

尝试这种情况:

ORDER BY CAST(thecolumn AS int)

其他提示

此为我工作:

ORDER BY ABS(column_name)

这是一个“自然排序”(如果您查找在谷歌“自然排序”,你会发现吨的东西)订购数字串的问题。基本上铸造字符串作为int和排序上所得到的值应该修复它。

这样做的原因是,随着一个char数据类型,则作为一字符串排序的行。

这个想法ORDER BY CAST()是正确的,不过,这样的性能将下降为返回的结果数量的增加。

如果这是在此列中仅数值数据,最好的做法是要找到一个合适的数值数据类型,并改变它。

如果你真的不能更改列,你会发现自己有性能问题,我建议有包含着价值浇铸到一个整数(将空值转换为相应的值)。

排序顺序列

索引排序顺序列和理想情况下,一个触发器添加到CHAR列,以便插入或更新的char值触发更新为整数值。

在某些情况下,这可能是一个很好的匹配:

ORDER BY LENGTH(column_name), column_name

特别是,如果你有要么全部数字或字母和数字的混合,但都具有相同的长度。一列

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top