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
都会返回一个可链接的结果。这意味着您可以继续对它调用方法,直到得到您喜欢的东西。Addchain:=db。Where(“”
)ahead可能更好。postgresql呢?占位符是“$1”、“$2”。。。而不是“?”