Golang の GORM にて IN 区を使ってシンタックスエラーが起きた時の対応

Golang 製の ORM ライブラリの GORM を使用していて、 IN 区を書いた時にエラーが出た。
結論から書くと、公式ドキュメントが間違っていた。

シンタックスエラー

GORM の公式ドキュメントには IN 区を使う時、下記のように記述するよう書いてある。

// IN
db.Where("name IN ?", []string{"jinzhu", "jinzhu 2"}).Find(&users)
// SELECT * FROM users WHERE name IN ('jinzhu','jinzhu 2');

エラーが出る。

Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?) at line 1

解決

「 ? 」の周りを ( ) で括れば解決する。

// IN
db.Where("name IN (?)", []string{"jinzhu", "jinzhu 2"}).Find(&users)
// SELECT * FROM users WHERE name IN ('jinzhu','jinzhu 2');