sqlite und Text Suche in Spalten?
-
Hallo,
ich habe eine Datenbank mit vielen Spalten.
Nun möchte ich eine Spalte aller Einträge nach einem Stichwort durchsuchen das irgendwo in einem Text vorhanden ist.
Diese Spalte ist ein TEXT Feld. Soviel ich googeln konnte ist:SELECT * FROM meineTabelle WHERE spalte MATCH 'Stichwort'
Die richtige Methode und soll auch schnell sein.
Stimmt dies so?
Zusatzfrage: ich weiss das die Stichwörter immer am Anfang stehen, kann man die ersten 12 Buchstaben durchsuchen lassen?
Grüße,
SirNoName
-
Hi,
bei nur einer Spalte würde ich es mit
SELECT * FROM meineTabelle WHERE spalte LIKE '%Stichwort%'
oder mit
SELECT * FROM meineTabelle WHERE spalte LIKE 'Stichwort%'
wenn das Stichwort immer am Anfang steht versuchen. ggf noch mal nach der korrekten LIKE-Syntax bei Deinem Datenbanksystem gucken, aber so müsste es eigentlich gehen.
MATCH soll wohl schneller gehen, müsste dann aber MATCH AGAINST
SELECT * FROM meineTabelle WHERE MATCH(spalte) AGAINST('Stichwort')
formuliert werden, und ist wohl mehr versionsabhängig als LIKE das mehr zum Urschleim von SQL gehört.
Ansonsten, probieren, obs Deinen Anforderungen entspricht.
-
Du kannst die Suche auf die ersten 12 Zeichen einschränken indem du
substr(Feld, 1, 12) LIKE '...'
verwendest.
Wird aber vermutlich langsamer sein alsFeld LIKE 'BLAH%'
und auch nicht viel schneller alsFeld LIKE '%BLAH%'
.