sqlite3 で文字を数値に変えて order by

sqlite3 でカラムのタイプがテキストだと、そのまま order by すると 11 が 2 よりも前に来てしまいます。
これってよくあることですよね。

でも、2 を 11 より前にしたいのであればこのままではダメです。

cast する

cast することによって文字列を数値に変換できます。
もちろん逆もできます。


cast(koumokuNo as integer)

クエリとしては、以下のような感じで。


SELECT * FROM kekka WHERE hizuke = '20211225' AND uketukeNo = '19' ORDER BY cast(koumokuNo as integer) ASC;