Android SQLite区分大小写查找

Android SQLite区分大小写查找,android,sqlite,cursor,case-sensitive,Android,Sqlite,Cursor,Case Sensitive,编辑:我找到了答案。使用“GLOB”。多么奇怪的一个词,难怪我什么都找不到 我试图在Android中使用游标对我的SQLite表进行区分大小写的查找。我在谷歌上搜索过,但所有结果都是人们询问如何获得不区分大小写的查找,以及如何使其不区分大小写的教程。这与我想要的正好相反。我想要一个区分大小写的查找,但我仍在学习SQLite,不知道要添加什么 这是我的游标当前的调用方式: c = getContentResolver().query(element, null, PeriodicTable.SYM

编辑:我找到了答案。使用“GLOB”。多么奇怪的一个词,难怪我什么都找不到

我试图在Android中使用游标对我的SQLite表进行区分大小写的查找。我在谷歌上搜索过,但所有结果都是人们询问如何获得不区分大小写的查找,以及如何使其不区分大小写的教程。这与我想要的正好相反。我想要一个区分大小写的查找,但我仍在学习SQLite,不知道要添加什么

这是我的游标当前的调用方式:

c = getContentResolver().query(element, null, PeriodicTable.SYMBOL + " LIKE? ", new String[]{guess}, "symbol");

元素周期表中的元素是区分大小写的,所以如果你输入CO,你会得到碳和氧。如果你输入Co,你就会得到钴。我想使用区分大小写来过滤错误的用户条目。

在执行查询之前,请尝试将内置的
LIKE
表达式的区分大小写设置为
ON

db.rawQuery("PRAGMA case_sensitive_like=ON", null);
那么

稍后,将
LIKE
的大小写敏感度恢复为默认值
OFF

db.rawQuery("PRAGMA case_sensitive_like=OFF", null);

让我知道这是否有帮助

元素周期表中没有碳和氧这样的东西。有碳和氧。还有钴。因此,如果您输入
CO
CO
CO
CO
,您将始终获得
CO
。当你可以使用
=
时,你为什么要使用
比如
或者
GLOB
。有什么区别?我正在为化学公式编写一个解析算法,因此我必须“猜测”当前元素作为当前字符和下一个字符的组合,这可能会导致CO、CO、CO和CO。
Like
使用“正则表达式”(嗯,有点)。虽然
=
是严格等价的(因此速度更快,因为它只进行一次比较)。感谢您的回答,我发现区分大小写的查找使用“GLOB”而不是“LIKE”。如果我使用rawQuery,我将不得不编写额外的代码,因为我正在为我的SQLite表使用contentProvider。但是如果我使用“GLOB”,我就不需要了。
db.rawQuery("PRAGMA case_sensitive_like=OFF", null);