2018-06-08

MySQL IN 參數在 Go 的正確用法

使用 go-sql-driver/mysql 操作資料庫,一個場景是查詢,使用 IN 的語法。但是結果不如預期,原本以為踩到上游的地雷,找到 #540 cannot update multiple dataINADA Naoki
解釋參數被解讀成字串,不是原本預期的結果。

追了 database/sql,看到最後的解釋 src/database/sql/driver/types.go,,參數的類型一旦是 string,值被當成 string 返回。所以呼應 INADA 的解釋。

ConvertValues() 的代碼裡無法接受 IN 參數帶入。做了實驗得出結論,得自己組合語句。