检查数据库中的列字符串是否是sqlite中查询的子字符串

时间:2017-09-26 07:29:08

标签: android sqlite android-sqlite

当前的Sqlite语法可以检查查询是否是列字符串的子字符串。 我可以做一个黑客来增加一个%的背后?在https://stackoverflow.com/a/5752671/908821

中描述
final String whereClause = DbHelper.COLUMN_URL + " LIKE ? " ;  

有一种语法,我可以做相反的事情吗?我想检查列字符串是否是查询的子字符串。

以下代码似乎不起作用。

final String whereClause = "? LIKE "  +  DbHelper.COLUMN_URL ;  

以下是我的其余代码:

String[] whereArg = {url};

ContentValues values = new ContentValues();
values.put(DbHelper.COLUMN_LAST_URL, lastUrl);

database.updateWithOnConflict(DbHelper.TABLE_BOOKMARK,
                values,
                whereClause,
                whereArg,
                SQLiteDatabase.CONFLICT_IGNORE);

如果基本网址是查询的子网格,我正在尝试更新“LastUrl”列。

我喜欢抓住的一些例子

Base Url (in database)         Query
-----------------------------------------------------------------
http://example.com/path        http://example.com/path/path2
http://example.com/path?id=0   http://example.com/path?id=0&x=xx 

1 个答案:

答案 0 :(得分:1)

LIKE运算符检查左侧的值是否与右侧的模式匹配。所以只需将值放在左侧,将模式放在右侧。 如果模式需要%不在数据库中,则必须附加它:

SELECT ... WHERE ? LIKE LastUrl || '%' ...