2017-09-26 62 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 || '%' ... 
相關問題