Sqlliteテーブルでは、次のようなテーブルに列の値があります
- マリオ
- フライ機
- 死霊のはらわた
- 4クロスナンプレ
- 20クロス数独
- 15クロス数独
- シムシティ
最初にテキストを並べ替えてから、数字で始まるテキストを並べ替えるにはどうすればよいですか。
必要な出力:
- 死霊のはらわた
- フライ機
- マリオ
- シムシティ
- 4クロスナンプレ
- 15クロス数独
- 20クロス数独
これを試すことができます
SELECT *
FROM Table1
ORDER BY CAST(column1 AS INTEGER), column1
出力:
| | 列 1 | ------------------- | | 死霊のはらわた | | | フライ機 | 写真 フライ機 | | マリオ | | | シムシティ | | | 4 クロス数独 | | | 15 クロス数独 | | | 20 クロス数独 |
これがSQLFiddleのデモです
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];
これをSQL内で行う必要がある場合は、使用できます
select columnName from table ORDER BY round(columnName) ASC, columnName ASC