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 als Feld LIKE 'BLAH%' und auch nicht viel schneller als Feld LIKE '%BLAH%' .


Log in to reply