You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GORM向MySQL插入POINT类型数据?解决单引号问题

Gorm中Location类型Valuer的POINT查询问题解决方法

你当前实现的Valuer把X和Y拼接成单个字符串作为参数,Gorm会自动为字符串参数添加单引号,导致生成的SQL是POINT('XX.XXXXX, YY.YYYYY'),而数据库的POINT函数需要接收两个独立的数值参数,单引号的存在会引发语法错误。

修改后的正确实现如下:

func (loc Location) GormValue(ctx context.Context, db *gorm.DB) clause.Expr {
    return clause.Expr{
        SQL:  "POINT(?, ?)",
        Vars: []interface{}{loc.X, loc.Y},
    }
}

这样Gorm会将X和Y作为两个独立的数值参数传入,生成的SQL格式为POINT(XX.XXXXX, YY.YYYYY),完全符合数据库POINT函数的参数要求,查询就能正常执行了。

内容的提问来源于stack exchange,提问作者K.k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:15:39