在Sqlite中搜索查询

时间:2013-04-27 07:33:18

标签: android sqlite

我在数据库中有一些项目。我使用“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);

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

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

但我需要“curry Mix,Mixture”作为我的输出我怎么能得到它。帮助我!

4 个答案:

答案 0 :(得分:2)

继续发表评论,

您可以尝试使用语法

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

基本上,

  • 第一个匹配以Item_name开头的
  • OR附加具有Space后跟Item_name的那些。阿卡是一个新词。 (注意%之后的空格)

答案 1 :(得分:1)

理论上,最简单的方法是为项目名称创建full-text search table,但并非所有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集。

答案 2 :(得分: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开头的条目。

答案 3 :(得分:0)

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

WHERE Item LIKE '%to' OR Item LIKE 'to%'