Go PostgreSQL LIKE-Abfragesyntax
Bei der Arbeit mit PostgreSQL und dem pq-Treiber von Go können beim Ausführen von LIKE-Abfragen Fehlermeldungen zur Syntax auftreten. Lassen Sie uns das Problem untersuchen und eine Lösung anbieten.
Die Abfrage im bereitgestellten Code lautet:
SELECT p.id, p.name, p.description, p.price, p.image, p.rate FROM products AS p WHERE LOWER(p.name) LIKE %% ORDER BY p.rate DESC
Das direkte Ausführen dieser Abfrage in PostgreSQL funktioniert, aber in Go wird ein Fehler ausgegeben:
pq: Syntaxfehler bei oder in der Nähe von „%“
Das Problem liegt in der falschen Syntax für den LIKE-Operator. Der Platzhalter sollte in einfache Anführungszeichen eingeschlossen werden:
SELECT p.id, p.name, p.description, p.price, p.image, p.rate FROM products AS p WHERE LOWER(p.name) LIKE '%' || || '%' ORDER BY p.rate DESC
Durch die Verwendung von einfachen Anführungszeichen wird sichergestellt, dass der Platzhalter als Literalzeichenfolge und nicht als Teil der Abfrage selbst behandelt wird.
Um weitere Syntaxprobleme zu vermeiden Erwägen Sie die Verwendung benannter Platzhalter anstelle von Positionsplatzhaltern:
query := `SELECT p.id, p.name, p.description, p.price, p.image, p.rate FROM products AS p WHERE LOWER(p.name) LIKE '%' || :name || '%' ORDER BY p.rate DESC` product_rows, err := db.Query(query, map[string]interface{}{"name": name})
Die Verwendung benannter Platzhalter erhöht die Lesbarkeit des Codes und verringert das Risiko von Syntaxfehler.
Das obige ist der detaillierte Inhalt vonWie verwende ich LIKE-Abfragen korrekt mit dem pq-Treiber von Go und PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!