1

Sqlliteテーブルでは、次のようなテーブルに列の値があります

  • マリオ
  • フライ機
  • 死霊のはらわた
  • 4クロスナンプレ
  • 20クロス数独
  • 15クロス数独
  • シムシティ

最初にテキストを並べ替えてから、数字で始まるテキストを並べ替えるにはどうすればよいですか。

必要な出力:

  • 死霊のはらわた
  • フライ機
  • マリオ
  • シムシティ
  • 4クロスナンプレ
  • 15クロス数独
  • 20クロス数独
4

4 に答える 4

1

これを試すことができます

SELECT * 
  FROM Table1
 ORDER BY CAST(column1 AS INTEGER), column1

出力:

| | 列 1 |
-------------------
| | 死霊のはらわた |
| | フライ機 | 写真 フライ機
| | マリオ |
| | シムシティ |
| | 4 クロス数独 |
| | 15 クロス数独 |
| | 20 クロス数独 |

これがSQLFiddleのデモです

于 2013-07-18T08:50:14.580 に答える
1
SELECT * FROM  [table] ORDER BY [column] GLOB '[0-9]*', [column];

仕事をします。

SELECT * FROM [table] ORDER BY CAST([column] AS INTEGER), [column];

の方が速いかもしれませんが、0開始文字列はテキストの前に表示されます。

編集:

より良いオプション:

SELECT * FROM [table] ORDER BY TYPEOF([column])='text' DESC, [column];
于 2013-07-18T09:22:34.587 に答える
0

これをSQL内で行う必要がある場合は、使用できます

select columnName from table ORDER BY round(columnName) ASC, columnName ASC
于 2013-07-18T09:12:14.240 に答える