SQLite: Fehlermeldung "no such function: INSTR"
Frage von Compi | 13.07.2017 um 17:00
Ich bekomme mit SQLite einen komischen Fehler, wenn ich die Funktion INSTR() benutze. Wenn ich zum Beispiel eine Abfrage wie SELECT id FROM tab WHERE INSTR(txt, 'abc') > 0 mache, erhalte ich die Fehlermeldung "no such function: instr".
Laut der Dokumentation von SQLite gibt es die Funktion INSTR() und soweit ich das abschätzen kann, ist auch die Syntax meiner Abfrage korrekt. Woran kann es also liegen, dass es nicht funktioniert? Ich weiß wirklich nicht, was ich hier falsch mache.
Ähnliche Themen
SQLite: String und Spalten verknüpfen mit SQLite (CONCAT)
Info | 2 Kommentare
Was haben sich solche für Titel gegeben die als "Radikalfeministin" bezeichnet werden können?
Offene Frage | 0 Antworten
SQLite: RPAD und LPAD in SQLite - Zeichen rechts und links auffüllen
Info | 1 Kommentar
Renamer-mehrere Dateien_Verzeichnisse_umbenennen
Offene Frage | 1 Antwort
SQLite: IF(a, b, c) Syntax funktioniert nicht
Frage | 1 Antwort
Bild vor dem Upload im Browser verkleinern
Tutorial | 5 Kommentare
Würgegeräusche als "mobbendes Verhalten", Erklärungen gesucht?
Offene Frage | 0 Antworten
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.
Die INSTR-Funktion wurde erst mit SQLite 3.7.15 eingeführt. Vermutlich nutzt du eine ältere Version von SQLite, in der es die Funktion noch nicht gab. So ist auch der Fehler zu erklären: SQLite kennt die Funktion einfach noch nicht.
Um deine SQLite-Version herauszufinden, kannst du folgende Abfrage machen, du bekommst dann die Version angezeigt:
Du kannst nun zwei Dinge tun. Entweder du führst ein Update auf eine höhere Version durch, zum Beispiel indem du dir die aktuelle DLL (oder deine benötigte Bibliothek) von der Website von SQLite herunterlädst oder du benutzt eine andere Funktion, die es in deiner SQLite-Version schon gibt. Zum Beispiel kannst du statt INSTR auch LIKE verwenden:
Dieses Statement würde deiner Abfrage "SELECT id FROM tab WHERE INSTR(txt, 'abc') > 0" entsprechen. Beachte aber, dass LIKE unabhängig von der Groß- und Kleinschreibung arbeitet (case insensitive) während INSTR auf die Groß- und Kleinschreibung achtet (case sensitive). Dein "abc" würde also mit INSTR kein "Abc" matchen, mit LIKE dagegen schon.
14.07.2017 um 18:19