Heim >Backend-Entwicklung >Golang >Wie verwende ich LIKE-Abfragen korrekt mit dem pq-Treiber von Go und PostgreSQL?

Wie verwende ich LIKE-Abfragen korrekt mit dem pq-Treiber von Go und PostgreSQL?

Linda Hamilton
Linda HamiltonOriginal
2024-12-12 10:49:18592Durchsuche

How to Correctly Use LIKE Queries with Go's pq Driver and PostgreSQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn