2016-04-05 18 views
3

Ich habe eine fts3-Tabelle namens tab und viele Einträge darin. Wenn ich diese Abfrage ausführen:Wie in SQLite FTS3 Tabelle mit "- *" abfragen?

SELECT * FROM tab WHERE key MATCH 'an*'; 

bekomme ich die Ergebnisse wie folgt aus:

an 
anul 
an- 

Aber wenn ich diese Abfrage ausführen:

SELECT * FROM tab WHERE key MATCH 'an-*'; 

es ergibt sich immer noch die "einen" Eintrag. Das Ergebnis wäre wie:

an 
an- 

Wie kann ich meine Abfrage schreiben, so das Ergebnis woudn't „eine“, aber nur die Einträge, die tatsächlich das Zeichen „-“?

+0

'-' ist ein reserviertes Zeichen für Set-Operationen verwendet wird, wenn ich die Dokumentation richtig lese. Leider sehe ich nicht, wie die Syntax hier Zeichen zu entkommen ist. Du könntest 'an \ - *' versuchen. – CommonsWare

Antwort

1

Gemäß den Standard tokenizer Regeln, - trennt Wörter und wird ansonsten ignoriert.

Sie haben an zuerst das Wort zu suchen, und überprüfen Sie den Bindestrich danach:

SELECT * 
FROM tab 
WHERE key MATCH 'an' 
    AND key LIKE 'an-%';