Syntaxe des requêtes Go PostgreSQL LIKE
Lorsque vous travaillez avec PostgreSQL et le pilote pq de Go, vous pouvez rencontrer des messages d'erreur concernant la syntaxe lors de l'exécution de requêtes LIKE. Explorons le problème et proposons une solution.
La requête dans le code fourni est :
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
L'exécution de cette requête directement dans PostgreSQL fonctionne, mais dans Go, elle génère une erreur :
pq : erreur de syntaxe à ou près de "%"
Le problème réside dans la syntaxe incorrecte pour l'opérateur LIKE. L'espace réservé doit être placé entre guillemets simples :
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
L'utilisation de guillemets simples garantit que l'espace réservé est traité comme une chaîne littérale plutôt que comme une partie de la requête elle-même.
Pour éviter d'autres problèmes de syntaxe. , pensez à utiliser des espaces réservés nommés plutôt que des espaces réservés positionnels :
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})
L'utilisation d'espaces réservés nommés augmente la lisibilité du code et réduit le risque de syntaxe. erreurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!