Webエンジニアのメモ帳

技術的な話を中心に書いています。

【Android】Roomの@Queryアノテーションで正規表現を利用する方法

例えば以下のようなSQLがあるとします。

SELECT * FROM users WHERE name LIKE "A*"

このSQLをRoomで動かす方法をいくつか説明します。

アノテーション内で||で文字列を結合する方法

@Queryアノテーション内では、以下のように||を使って文字列を結合させることができます。

@Query("SELECT * FROM users WHERE name LIKE :prefix || '%'")
fun getUsers(prefix: String?): List<User>

引数を単純化する方法

%や_などを@Queryアノテーションに含めない方法もあります。

つまり、Daoクラスには以下のように記述し

@Query("SELECT * FROM users WHERE name LIKE :prefix")
fun getUsers(prefix: String?): List<User>

以下のように呼び出します。

getUsers("A%")

参考

https://stackoverflow.com/questions/44184769/android-room-select-query-with-like