2017-09-26 4 views
0

La syntaxe Sqlite actuelle peut vérifier si une requête est une sous-chaîne d'une chaîne de colonne. et je peux faire un hack pour ajouter un% derrière le? décrit dans https://stackoverflow.com/a/5752671/908821Vérifiez si la chaîne de colonne dans la base de données est une sous-chaîne d'une requête dans sqlite

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

est là une syntaxe où je peux faire le contraire? Je veux vérifier si la chaîne de colonne est une sous-chaîne d'une requête.

Le code suivant ne semble pas fonctionner.

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

Voici le reste de mes codes:

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

Je suis en train de mettre à jour la colonne « lastURL » si l'URL de base est une sous-chaîne d'une requête.

quelques exemples que j'aime attraper

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

Que signifie « sous-chaîne d'une requête » signifie ici? –

+0

@TimBiegeleisen par ex. si ma requête est "abcde" et dans ma base de données j'ai "abcd". donc mes données 'abcd' sont une sous-chaîne de ma requête 'abcde' –

+0

Alors vous voulez dire "une sous-chaîne d'une ** valeur **". –

Répondre

1

l'opérateur vérifie si la valeur AIMENT sur la gauche correspond au modèle à droite. Il suffit donc de mettre la valeur sur la gauche, et le motif sur la droite. Si le modèle a besoin d'un % qui ne sont pas dans la base de données, vous devez l'ajouter:

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