2016-04-29 47 views
0

在查询中使用时=我有看起来像这样的转义特殊字符在源码中的Android

AAABBB

AAA%BBB

aaa_bbb

aaa'bbb会列itemitem数据库

我的查询看起来像这样,其中itemitems是上述字段之一;

itemitems = itemitems.replaceAll("'","''"); 
    itemitems = itemitems.replaceAll("%","\\\\%"); // use \\\\ to generate \% 
    itemitems = itemitems.replaceAll("_","\\\\_"); 

    itemitems = "'" + itemitems + "'"; 
    String query = "select * from " + table_ITEMS + " where itemitem = " + itemitems + " ESCAPE '\\'"; 

我得到以下异常:

SQLiteException: near "ESCAPE": syntax error (code 1): , while compiling: select * from items where itemitem = 'aaa\_bbb' ESCAPE '\' 

但是,如果我用itemitem等代替itemitem =,我没有得到例外。但是,我也没有得到完全匹配。这适用于使用itemitem = query查找aaa'bbb。

看起来=查询不接受ESCAPE子句。我如何逃脱%_特殊字符?

回答

0

=运算符没有ESCAPE子句,因为它不解释模式字符%_。只有LIKE会使用这些。

+0

谢谢CL。在测试了许多不同的模式之后,我也得出了这个结论。我使用“like”来使用escape子句搜索只读数据库,然后当我更改检索到的数据以将其写入用户数据库以确保用户数据库不具有相同的名称时使用“=”数据。 –