我有一个sql Query,用于为表单中的表生成信息。我希望通过操作订购信息。我的操作编号从1-30开始,但是当我在表格中查看它们时,它会将所有操作从一个开始,然后是两个开始。我知道这是因为该字段是一个文本字段,但有没有办法按数字顺序排序?
答案 0 :(得分:3)
试试这个
SELECT * FROM Tablename ORDER BY val(operation)
排序编号后必须为非数字
答案 1 :(得分:2)
首选方法是创建一个整数SortOrder
列,按所需顺序填充值1到N并按顺序排列。
如果没有您需要根据您的Operation
列右侧填充到最大项目长度的计算列进行排序。
尝试类似:
SELECT Operation, Element, Time
FROM YourTable
ORDER BY CInt(Operation) ASC
如果数字中存在句号, [注意:CInt()
将无法按预期行事。 CInt(8.6)将最多为9!]
答案 2 :(得分:1)
你的问题是你在带有类型字符串的列上命令你的结果 - 在这种情况下“5 H ......”出现在“12 S ...”之后,因为排序算法首先检查第一个char ...而且只有第一个字符与第二个字符相同...
要获得正确的排序,请在额外的列中选择die partID(作为int或数字)并按partID排序
答案 3 :(得分:0)
您可以包含新列和订单,例如:
SELECT Operation, Element, Time, Qty, Mid(Operation, 1, 2) AS Order
FROM YourTable
ORDER BY Order ASC
注意:如果数字超过2位,则不会大幅缩放。你必须选择空格字符的第一个字符然后再订购。类似的东西:
SELECT Operation, Element, Time, Qty, Mid(Operation, 1, Instr(Operation, " ")) AS Order
FROM YourTable
ORDER BY Order ASC