-
20-08-2019 - |
题
我有存储为字符数的一列。当我做一个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
特别是,如果你有要么全部数字或字母和数字的混合,但都具有相同的长度。一列
不隶属于 StackOverflow