Go PostgreSQL LIKE 查询语法
使用 PostgreSQL 和 Go 的 pq 驱动程序时,执行 LIKE 查询时可能会遇到有关语法的错误消息。让我们探讨这个问题并提供解决方案。
提供的代码中的查询是:
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
直接在 PostgreSQL 中执行此查询可以工作,但在 Go 中会引发错误:
pq:“%”处或附近的语法错误
问题在于 LIKE 的语法不正确 操作员。占位符应用单引号引起来:
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
使用单引号可确保占位符被视为文字字符串而不是查询本身的一部分。
避免进一步的语法问题,考虑使用命名占位符而不是位置占位符:
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})
使用命名占位符可以提高代码可读性并降低语法风险错误。
以上是如何正确使用 Go 的 pq 驱动程序和 PostgreSQL 的 LIKE 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!