在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%" 的形式发送searchKeyorgSearch 将是原始词: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房间数据库中连接两个字符串列的主要内容,如果未能解决你的问题,请参考以下文章

pandas - 合并字符串列不起作用(错误?)

在单个 spark 数据框中减去两个字符串列的最佳 PySpark 实践是啥?

使用pyspark将两个字符串列值连接到整数数组

添加来自不同表的两个字符串列

存储数据点的两个字符串列 - 一个接一个访问

Oracle:比较两个不同表中没有主键的字符串列以查找匹配/不匹配的字符串