在我的表中,我有以下结构:
CREATE TABLE "species" (
"_id" TEXT NOT NULL,
"name" TEXT,
"name_es" TEXT,
"name_it" TEXT,
"name_fr" TEXT,
"name_de" TEXT,
PRIMARY KEY("_id")
);
正如您所看到的,我的“name”列被本地化为多种语言,并在末尾附加了_isocode。
我试图弄清楚如何操作DAO查询,以便在Select本身中附加lang参数,类似于以下内容:
@Query("SELECT name " + lang +
" FROM species")
List<SpeciesEntity> getSpecies(String lang);
但是它根本不起作用(它甚至不能编译),我也试过像这样使用SQLITE concat ||
:
@Query("SELECT name||:lang " +
" FROM species")
List<SpeciesEntity> getSpecies(String lang);
但它也不起作用,它只将_es
isocode附加到实际的name
列值,而不是检索name_es
列值。有什么方法可以实现我所需要的吗?
1条答案
按热度按时间nvbavucw1#
SQLite不支持动态SQL,因此您无法动态创建列名。
您可以使用
CASE
表达式检查值:lang
并返回您应该选择的列:我假设
:lang
是以_
开头的字符串,就像_xx
一样。