1

我有一个 sql 查询,用于为表单中的表生成信息。我希望信息按操作顺序排列。我的操作编号从 1 到 30,但是当我在表中查看它们时,它会按照所有操作的顺序对它们进行排序,从一个一起开始,然后是两个。我知道这是因为该字段是一个文本字段,但是有没有办法以数字方式对它们进行排序?

在此处输入图像描述

4

4 回答 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 回答