文字列型の内容を数字型に変換してソートをしたいケースってあるかと思います。
普通に文字列でソートすると
1
10
11
2
21
みたいな順番になってしまうので、これを
1
2
10
11
21
みたいにする方法です。
PostgreSQLだと
cast(カラム名 as integer);
MySQLだと
cast(カラム名 as unsigned);
などのように書くかと思います。プログラム側で分岐させて書くのは煩雑なので以下のようにするとデータベースに依存せずに書けるかと思います。
Database.castToIntRawColumn("カラム名");
実用例
ちなみにAipoの独自クラスです。
public static String castToIntRawColumn(String column) { if (isJdbcMySQL()) { return "CAST(" + column + " AS UNSIGNED)"; } else if (isJdbcPostgreSQL()) { return "CAST(" + column + " AS INT)"; } return column; }