2010-09-08 7 views

Antwort

33

Ja, benutze Like. Select id from sometable where name like '%omm%' würde jede Zeile zurückgeben, die 'omm' irgendwo in der Namensspalte hatte.

+0

Was ist, wenn die Zeichenfolge tatsächlich das Zeichen "%" enthielt. Was macht SQLite in diesem Fall? –

+4

Es gibt ein ESCAPE-Schlüsselwort, mit dem Sie ein Escape-Zeichen definieren können, so dass Sie auf% oder _ abfragen können. Siehe: http://www.sqlite.org/lang_expr.html Sie würden also etwas wie "ID aus Mistable wählen, wo Name wie '% somename \ %%' Escape '\' – GrandmasterB

+1

Warnung: dies ist Groß-und Kleinschreibung. – Bren

12

Sie kann Verwendung LIKE, aber es wird wirklich langsam, wenn das Muster Sie nach beginnt mit '%' suchen - das heißt, wenn der Teil Sie suchen ist nicht unbedingt am Anfang der Feld.

Wenn Sie solche Suchen durchführen müssen, ziehen Sie die Verwendung von FTS3 in Betracht, wodurch die Volltextsuche wesentlich effizienter wird.

+0

Interessant, gibt es eine Menge Overhead zu verwenden FTS3? Kann es mit der SQLite-API in C verwendet werden? –

+0

@Tommy: Ich bin mir nicht sicher, welcher Overhead aus Ihrer Perspektive als viel qualifizieren würde. Ja, es kann von der C-API verwendet werden. –

+1

Die FTS-Erweiterung ist in der SQLite-Distribution enthalten. Sie müssen nur die Dokumente lesen und zur Erstellungszeit einschalten. Beachten Sie, dass es einen Index von nicht vernachlässigbarer Größe erstellt, mit dem es seine magische Wirkung entfaltet ... – RBerteig

Verwandte Themen