1

フォーム内のテーブルの情報を生成するために使用される sql クエリがあります。操作で情報を整理したい。操作には 1 ~ 30 の番号が付けられていますが、テーブルでそれらを表示すると、すべての操作が 1 の組み合わせで始まり、次に 2 の順に並べられています。フィールドがテキストフィールドであるためだと思いますが、数値で並べ替える方法はありますか?

ここに画像の説明を入力

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 ...」の後に来ます2番目の文字に移動するのと同じです...

ソートを正しく行うには、追加の列 (int または数値) でダイの partID を選択し、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 に答える