使用 EXCEPT 的 SQL 查询在 Golang 中不起作用



我不明白为什么我的INSERT查询不能正确处理参数,但可以很好地处理其中的直接值。

戈朗,研究生。

此代码运行良好:

fmt.Printf("connected to %sn", ec.DBName)
q := `
INSERT INTO some_table (name, num) VALUES ('sample',20)
EXCEPT
SELECT name, num FROM some_table;`
_, err = db.Query(q)
if err != nil {
fmt.Println(err)
}

但这一次引发了一个错误:

fmt.Printf("connected to %sn", ec.DBName)
q := `
INSERT INTO some_table (name, num) VALUES ($1,$2)
EXCEPT
SELECT name, num FROM some_table;`
_, err = db.Query(q, "sample", 20)
if err != nil {
fmt.Println(err)
}

错误是";pq:EXCEPT类型text和integer不能匹配";

您可以将这两个值都作为字符串发送,并尝试通过sql将它们强制转换为所需的类型。类似这样的东西-

q := `
INSERT INTO some_table (name, num) 
VALUES (cast($1 as text), cast($2 as int)) 
EXCEPT 
SELECT name, num FROM some_table;`
_, err = db.Query(q, "sample", "20")
if err != nil {
fmt.Println(err)
}

最新更新