8 Stimmen

Wildcard funktioniert nicht in SQLite

Ich versuche immer wieder, Wildcards in einer Suche in einer Android-App zu verwenden, und stoße dabei auf Fehler.

Ich führe eine Suche in meiner Anwendung mit der folgenden Zeichenfolge durch:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
              "name LIKE %?%", new String[] { query }, null, null, null);

wenn ich name LIKE %?% ou name=%?% Ich erhalte die Meldung "bei "%": Syntaxfehler: , beim Kompilieren: SELECT _id, name FROM namedrxns WHERE name=%?%" Fehler.

sondern mit name LIKE '%?%' ou name='%?%' Ich erhalte stattdessen "bind or column index out of range: handle 0x40cb70"

Kann mir bitte jemand sagen, was ich falsch mache?

Danke!

26voto

whlk Punkte 15257

Anhängen der % zum query Parameter.

D.H.:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
          "name LIKE ?", new String[] { "%"+query+"%" }, null, null, null);

Wie Thomas Mueller bereits sagte, beachten Sie bitte, dass % y _ innerhalb des Wertes funktionieren weiterhin als Platzhalter.

5voto

Thomas Mueller Punkte 46988

Das Folgende sollte funktionieren (ich habe es aber nicht mit SQLite getestet):

"name LIKE '%' || ? || '%'"

Bitte beachten Sie, dass "%" und "_" innerhalb des Wertes weiterhin als Platzhalter funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X