Postgresql 将查询中的位置分开

Postgresql 将查询中的位置分开,postgresql,go,where-clause,go-gorm,Postgresql,Go,Where Clause,Go Gorm,我需要将中的分隔开来,以便使用条件验证值,例如 email := "test@test.com" if email != "" { db.Where("users.email LIKE ?", "%"+email+"%") } db.Where("users.name like ?", "%"+jhon+"%").Find(&users) 返回两个查询: 1:选择“用户”。*从“用户”中选择users.email,如'%test@test.com%“ 2:选择“用户”。*从“用户”

我需要将
中的
分隔开来,以便使用条件验证值,例如

email := "test@test.com"
if email != "" {
  db.Where("users.email LIKE ?", "%"+email+"%")
}
db.Where("users.name like ?", "%"+jhon+"%").Find(&users)
返回两个查询:

1:
选择“用户”。*从“用户”中选择users.email,如'%test@test.com%“

2:
选择“用户”。*从“用户”中选择users.name,如“%jhon%”

但我只需要一个查询中的结果:

 SELECT "users".* FROM "users" WHERE users.email LIKE '%test@test.com%' and users.name LIKE '%jhon%'

谢谢

我认为这应该有效:

chain := db.Where("users.name like ?", "%"+jhon+"%")
email := "test@test.com"
if email != "" {
  chain = chain.Where("users.email LIKE ?", "%"+email+"%")
}
chain.Find(&users)

所有的Gorm方法,如
Where
都会返回一个可链接的结果。这意味着您可以继续对它调用方法,直到得到您喜欢的东西。

Add
chain:=db。Where(“”
)ahead可能更好。postgresql呢?占位符是“$1”、“$2”。。。而不是“?”