package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, _ := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test")
// Just Query
rows, _ := db.Query("SELECT id FROM test_1 WHERE id=123456")
for rows.Next() {
var id interface{}
rows.Scan(&id)
fmt.Println("Query no args =>", id)
}
// Query with args
rows, _ = db.Query("SELECT id FROM test_1 WHERE id=?", 123456)
for rows.Next() {
var id interface{}
rows.Scan(&id)
fmt.Println("Query has args =>", id)
}
}
Output:
$ go run main.go
Query no args => [49 50 51 52 53 54]
Query has args => 123456
Question:
In my mind, "SELECT id FROM test_1 WHERE id=123456"
and "SELECT id FROM test_1 WHERE id=?", 123456
are same SQL-query.
Why the result's TYPE is not same?
Is it a bug or just unfriendly API design?