2017-09-26 61 views
0

当前的Sqlite语法可以检查查询是否为列字符串的子字符串。 我可以做一个黑客添加%的背后?描述在https://stackoverflow.com/a/5752671/908821检查数据库中的列字符串是否是sqlite中的查询的子字符串

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); 

我想如果基URL是一个查询的子串来更新“最后URL”栏中。

一些实例中,我喜欢抓

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 
+0

什么是“查询字符串”这里的意思? –

+0

@TimBiegeleisen例如如果我的查询是“abcde”,并在我的数据库中有“abcd”。所以我的数据'abcd'是我查询'abcde'的子字符串 –

+0

然后你的意思是“一个**值**的子字符串”。 –

回答

1

的LIKE操作者检查在左边的值是否在右侧的图案相匹配。所以只需将值放在左侧,并将模式放在右侧。 如果该模式需要一个%,是不是在数据库中,你必须将其追加:

SELECT ... WHERE ? LIKE LastUrl || '%' ... 
相关问题