gpt4 book ai didi

sql - 去 postgresql LIKE 查询

转载 作者:IT老高 更新时间:2023-10-28 13:05:42 26 4
gpt4 key购买 nike

我正在使用 Go 和 PostgreSQL(pq 驱动程序),我有以下查询

SELECT p.id, p.name, p.description, p.price, p.image, p.rate
FROM products AS p
WHERE LOWER(p.name) LIKE %$1% ORDER BY p.rate DESC

如果我直接在 PostgreSQL 中执行这个查询,它可以工作,但在 Golang 中说:

pq: syntax error at or near "%"

我该如何解决?我尝试使用“\%”但没有用。谢谢。

这里是完整的源代码

func FindByName(name *string) ([]*Product, error) {
db, err := db.StablishConnection()
if err != nil {
log.Fatal(err)
panic(err)
}
defer db.Close()

query := `SELECT p.id, p.name, p.description, p.price, p.image, p.rate
FROM products AS p
WHERE LOWER(p.name) LIKE %$1% ORDER BY p.rate DESC`

product_rows, err := db.Query(query, name)

if err != nil {
return nil, err
}

if product_rows == nil {
return nil, errors.New("No Products Named " + *name)
}

products := []*Product{}
for product_rows.Next() {
product := new(Product)
err = product_rows.Scan(&product.Id,
&product.Name,
&product.Description,
&product.Price,
&product.Image,
&product.Rate)
if err != nil {
panic(err)
}
products = append(products, product)
}
return products, nil
}

最佳答案

您需要将 like 模式放在单引号中:

SELECT p.id, p.name, p.description, p.price, p.image, p.rate
FROM products AS p
WHERE LOWER(p.name) LIKE '%' || $1 || '%'
ORDER BY p.rate DESC;

关于sql - 去 postgresql LIKE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com