1

我在数据库中有一些项目。我使用“like”关键字过滤

询问:mCursor = mDb.query(listTable, new String[] { ID_rs, Item_name, item_code, Unit_code, Tot_Amt, dis_count, }, Item_name + " like '%" + mix + "%' ORDER BY " + Item_name + " ASC", null, null, null, null, null);

例如:数据库中的值 1.SAKTHI readymix 2.curry Mix 3.Mixture

我的结果:1.SAKTHI readymix 2.curry Mix 3.Mixture

但我需要“咖喱混合,混合”作为我的输出,我怎样才能得到它。帮帮我!

4

4 回答 4

2

继续你的评论,

您可以尝试使用语法

Item_name + " like '" + mix + "%' OR " + Item_name + " like '% " + mix + "%'"

基本上,

  • 第一个匹配以 Item_name 开头的,
  • OR 附加具有空格后跟 Item_name 的那些。阿卡是一个新词。(注意 % 后面的空格)
于 2013-04-27T16:27:06.973 回答
1

理论上,最简单的方法是为项目名称创建一个全文搜索表,但并非所有 Android 版本都启用了 FTS。

要搜索以 开头的值mix,请使用LIKE。要搜索mix单词开头的值,请使用GLOB搜索前面不是字母的字符mix

SELECT *
FROM ListTable
WHERE ItemName LIKE 'mix%'
   OR ItemName GLOB '*[^a-zA-Z][mM][iI][xX]*'

LIKE,不同,GLOB它区分大小写,因此您必须同时列出小写和大写字符。

如果一个单词可以包含任何非 ASCII 字母,则必须将它们添加到a-z集合中。

于 2013-04-27T09:41:24.777 回答
1

鉴于“@CL 我需要搜索字符串的开头而不是中间的单词 – APriya”

如果你尝试:

Query:mCursor = mDb.query(listTable, new String[] { ID_rs, Item_name, item_code, Unit_code, Tot_Amt, dis_count, }, Item_name + " like '% " + mix + "%' ORDER BY " + Item_name + " ASC", null, null, null, null, null);

注意第一个 % 之后的空格,因为目标是只找到以 mix 开头的条目。

于 2013-04-27T09:54:58.383 回答
0

您应该使用使用 OR 运算符的 where 子句:

WHERE Item LIKE '%to' OR Item LIKE 'to%'
于 2013-04-27T08:43:41.277 回答