【问题标题】:concat two string columns in android room database在android房间数据库中连接两个字符串列
【发布时间】: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

【问题讨论】:

  • 您使用的是哪个数据库?
  • 我使用房间数据库

标签: android sql database sqlite concatenation


【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2010-11-22
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多