在android房间数据库中连接两个字符串列
Posted
技术标签:
【中文标题】在android房间数据库中连接两个字符串列【英文标题】:concat two string columns in android room database 【发布时间】:2021-06-12 02:41:03 【问题描述】:我需要在查询中连接两列并进行比较。这是我的代码。它不起作用。我想搜索全名。如何做到这一点:
@Query("SELECT * FROM shohada_table WHERE name LIKE :searchKey OR family LIKE :searchKey OR (SELECT name || family FROM shohada_table AS fullname ) like :orgSearch ORDER BY family ASC, name ASC")
fun getInfo( orgSearch: String): DataSource.Factory<Int, ShohadaItem>
在这个查询中,我以%SearchWord%"
的形式发送searchKey
,orgSearch
将是原始词:SearchWord
。例如,如果我想搜索Linus Torvalds
,则searchKey
将是%Linus Torvalds%
,orgSearch
将是Linus Torvalds
。
【问题讨论】:
您使用的是哪个数据库? 我使用房间数据库 【参考方案1】:您好,感谢您的回复。我在以下查询中得到了我想要的结果。
@Query("SELECT * FROM shohada_table WHERE name LIKE :searchKey OR family LIKE :searchKey OR (SELECT name || ' ' || family as fullname ) LIKE :searchKey ORDER BY position ASC, family ASC, name ASC")
fun getSearchedItems(searchKey: String): DataSource.Factory<Int, ShohadaItem>
如果我的搜索词是 mahdi noori
,我的 searcKey 将是 %mahdi%noori%
。我为此使用以下代码:
shohadaDao.getSearchedItems("%$searchKey.replace(" ", "%")%")
【讨论】:
【参考方案2】:您只需要使用 (SELECT name || family FROM sohada_table AS fullname ) 而不是 姓名 ||家庭
@Query("SELECT * FROM shohada_table WHERE name LIKE :searchKey OR family LIKE :searchKey OR (name || family) :orgSearch ORDER BY family ASC, name ASC")
fun getInfo( orgSearch: String): DataSource.Factory<Int, ShohadaItem>
【讨论】:
以上是关于在android房间数据库中连接两个字符串列的主要内容,如果未能解决你的问题,请参考以下文章