SQLite(like)查询在使用特殊字符查询时返回所有结果

时间:2013-03-22 11:51:54

标签: android sql database sqlite

我有一个关于android SQLite的问题:我在表中有一组记录。我使用一些特殊字符查询记录,如{“,[,],*,&,^,%,$,#}”。它在游标中返回正确的结果。

当我使用特殊字符{'}(单引号)时,它显示所有结果,其中我的数据库中没有该字符的结果。我在SQLita工具中执行相同的查询它是完美的,但在我的程序中它返回所有结果。为什么会这样?如何解决此问题。请帮我解决这个问题。

代码在这里:

if( search_tag!=null && search_tag.length() > 0 )
        {
            query_filtered.append("("+DatabaseHelper.TABLE_DOCS.COL_TITLE+" like "+"'%"+search_tag+"%')");
        }

查询在这里:

select 
    id as _id, category_array, title, 
    building_name, content_type_array, url, type_of_level 
from 
    documents_list 
where 
    (title like '%'%')

2 个答案:

答案 0 :(得分:3)

在SQL字符串中,引号必须通过加倍来转义:

... WHERE title LIKE '%''%'

为避免格式化此类问题,您应该使用参数:

String title = "'";
db.query(..., "title LIKE ?", new String[] { "%" + title + "%" }, ...);

答案 1 :(得分:0)

这个查询对我来说很好用

String select = "Select time from english_details where title = '"
                + title + "'";

所以你可以试试这个

String select = "Select time from english_details where title = '%"
                + title + "%'";