Android:带有通配符的SQL rawQuery(%)

whl*_*hlk 10 java sqlite android

我正在rawQuery()使用以下与此类似的sql字符串:

selectionArgs = new String[] { searchString };
Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs);
Run Code Online (Sandbox Code Playgroud)

但现在我必须在搜索中包含一个通配符,所以我的查询看起来像这样:

SELECT列FROM表WHERE列LIKE'searchstring%'

但是当查询包含单引号时,将抛出以下SQLite异常: android.database.sqlite.SQLiteException: bind or column index out of range

如何在带有通配符元素的SQL查询中使用selectionArgs运行rawQuery?

whl*_*hlk 24

你必须附加%到selectionArgs本身:

selectionArgs = new String[] { searchString + "%" };
Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs);
Run Code Online (Sandbox Code Playgroud)

注:因此%,并_searchString字符串仍然工作作为通配符!


Bra*_*ein 19

Sqlite框架自动将单引号放在?内部人物.

String [] selectionArgs = {searchString + "%"};
Cursor c;
// Wrap the next line in try-catch
c = db.rawQuery("SELECT column FROM table WHERE like ?", selectionArgs);
Run Code Online (Sandbox Code Playgroud)

而已.