func (loc Location) GormValue(ctx context.Context, db *gorm.DB) clause.Expr { return clause.Expr{ SQL: "POINT(?)", Vars: []interface{}{fmt.Sprintf("%f, %f", loc.X, loc.Y)}, }}這是我的估價師。它創建了一個這樣的查詢POINT('XX.XXXXX, YY.YYYYY')。但是由于單引號,這個查詢不起作用。我怎么解決這個問題?
1 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
一種解決方案可能是使用特定于 MySQL 的函數,例如GeomFromText或PointFromText將字符串轉換為空間數據類型。
func (loc Location) GormValue(ctx context.Context, db *gorm.DB) clause.Expr {
return clause.Expr{
SQL: "PointFromText(?)",
Vars: []interface{}{fmt.Sprintf("POINT(%f %f)", loc.X, loc.Y)},
}
}
此處提供了更多詳細信息。另外請注意,根據您使用的 MySQL 版本,這些函數的名稱可能會有所不同。例如MySQL 5.6PointFromText函數對應MySQL 8.0ST_PointFromText函數。
- 1 回答
- 0 關注
- 258 瀏覽
添加回答
舉報
0/150
提交
取消