如何使用gorm将POINT插入mysql


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')的查询。但是由于使用了单引号,所以此查询不起作用。我该如何解决这个问题?

一种解决方案可能是使用MySQL特定的函数,如GeomFromTextPointFromText,将字符串转换为空间数据类型。

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函数。

相关内容

  • 没有找到相关文章

最新更新