我有一个 sql 查询,用于为表单中的表生成信息。我希望信息按操作顺序排列。我的操作编号从 1 到 30,但是当我在表中查看它们时,它会按照所有操作的顺序对它们进行排序,从一个一起开始,然后是两个。我知道这是因为该字段是一个文本字段,但是有没有办法以数字方式对它们进行排序?
问问题
99 次
4 回答
3
试试这个
SELECT * FROM Tablename ORDER BY val(operation)
排序后必须是非数字
于 2013-05-23T08:56:55.607 回答
2
首选方法是创建一个整数SortOrder
列,按您想要的顺序填充值 1 到 N 并按它排序。
如果您需要根据您的Operation
列右侧填充到最大项目长度的计算列排序,则失败。
尝试类似:
SELECT Operation, Element, Time
FROM YourTable
ORDER BY CInt(Operation) ASC
[注意:CInt()
如果数字中存在句点,则不会按预期运行。CInt(8.6) 将四舍五入到 9 !]
于 2013-05-23T08:42:26.687 回答
1
您的问题是您将结果排序在字符串类型的列上-在这种情况下,“5 H ...”在“12 S ...”之后,因为排序算法首先检查第一个字符...并且仅检查第一个字符是一样的它移动到第二个字符......
要正确排序,请在额外的列中选择 die partID(如 int 或 number)并按 partID 排序
于 2013-05-23T08:45:44.467 回答
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
于 2013-05-23T08:43:01.433 回答