SQLiteのFORMAT関数
SQLiteでは、以下のようにFORMAT関数で0埋めを行うことができます。
SELECT FORMAT(1,'D3') # 001と出力される
FORMATはRoomでは使えない
しかし、Androidの開発で使われるRoomでは、FORMATを使うことはできません。
使おうとすると、以下のエラーが表示されます。
There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such function: FORMAT)
その原因は、Roomの最新バージョンで使われているSQLiteのバージョンが古いためです。(2023年10月時点の情報)
対処法
以下のように、SUBSTR関数で代用します。
SELECT SUBSTR('00' || :num , -3 ,3)
SUBSTR関数は文字列の一部を切り出す関数で、各引数は以下の通りです。
- 第1引数 対象の文字列
- 第2引数 何文字目から切り出すか (今回だと後ろから3文字目)
- 第3引数 何文字切り出すか
つまり今回の例で言うと、numが10だとしたら、一度0010にしてから、後ろの3文字を切り出します。
このようにして、変数numを0埋めで3桁にすることができます。