Anda tidak dapat menggunakan variabel bind (parameter) untuk mereferensikan kolom dalam klausa ORDER BY. Namun, Anda dapat menggunakan variabel bind dalam ekspresi seperti ini:
@Query("select * from coin ORDER BY
CASE :order
WHEN 'percent_change_24h' THEN percent_change_24h
WHEN 'other_column_name' THEN other_column_name
END asc limit :numberOfCoins")
fun getAllTop(order: String, numberOfCoins: Int): Flowable<List<CoinDB>>
Anda perlu menambahkan klausa WHEN terpisah ke pernyataan CASE untuk setiap kolom/ekspresi yang ingin Anda urutkan, dan Anda mungkin perlu atau ingin menambahkan klausa ELSE untuk situasi di mana variabel :order bind tidak cocok dengan salah satu dari kasus standar Anda.
Pembatasan pada variabel bind juga berlaku untuk klausa where dan proyeksi (pilih daftar). Variabel Bind memiliki nilainya sendiri dalam contoh Anda baik String atau Int untuk :order dan :numberOfCoins masing-masing.