【问题标题】:Like case sensitive in room persistence library就像房间持久性库中区分大小写一样
【发布时间】:2018-05-06 10:16:49
【问题描述】:

使用房间持久化库android时如何使用LIKE查询区分大小写??

使用下面的查询

@Query("SELECT * FROM category WHERE category_name LIKE '%' || :categoryName|| '%'")
List<Category> getAllCategory(@Nullable String categoryName);

使用PRAGMA case_sensitive_like = on 不起作用

【问题讨论】:

  • sqlite.org/lang_expr.html - 部分The LIKE, GLOB, REGEXP, and MATCH operators
  • @pskink 我知道如何使用 sql 查询,但不知道如何在 android 中将其应用于空间
  • 那么您的@Query("sqlite select staement") 是什么样的?你有什么问题?
  • 等一下,让我更新我的答案
  • tutorialspoint.com/sqlite/sqlite_glob_clause.htm - 为什么不尝试googling,然后再一次又一次地问同样的问题? “与 LIKE 运算符不同,GLOB 区分大小写,它遵循 UNIX 的语法来指定以下通配符。星号 () 问号 (?) 星号 () 表示零或多个数字或字符。问号 (?) 表示单个数字或字符。"

标签: android android-room


【解决方案1】:

通过 pskink 的帮助找到了答案:

用GLOB代替LIKE,查询成功如下

@Query("SELECT * FROM category WHERE category_name GLOB '*' || :categoryName|| '*'")
List<Category> getAllCategory(@Nullable String categoryName);

【讨论】:

  • 我这样做是为了避免两次插入相同的单词但它不起作用,我搜索 Hello 它没问题,但如果我搜索 hello 而不是返回结果 hello 它只是插入一个新的行...
  • 您在使用 GLOB,然后阅读此链接,希望对您有所帮助sqlite.org/lang_expr.html#like
猜你喜欢
  • 1970-01-01
  • 2018-05-27
  • 2018-01-22
  • 1970-01-01
  • 2013-06-26
  • 2020-03-19
  • 2018-03-02
  • 1970-01-01
  • 2017-10-29
相关资源
最近更新 更多