我需要有关使用 Go 从表中获取记录的帮助。
我的问题是我正在编写 MySQL 查询并添加另一个 where 子句,即 HPhone 号码,这里的 HPhone 号码插入到数据库中,格式如 999-999-9999
。我通过了这个 HPhone格式如 9999999999
的数字。这与正确的数据库字段值不匹配。我使用 SUBSTRING
在数字之间添加连字符,但它没有获取记录,但是当我像 999-999-9999
一样传递时没有 SUBSTRING
它返回记录。
在这里我演示了我是如何使用它的。
strQry = `SELECT * from table WHERE Depot = ?`
if HPhone != "" {
strQry += ` AND HPhone = ?`
}
queryArgs := []interface{}{RouteAvailability.Depot}
if HPhone != "" {
queryArgs = append(queryArgs, "SUBSTRING("+HPhone+",1,3)"+"-"+"SUBSTRING("+HPhone+",4,3)"+"-"+"SUBSTRING("+HPhone+",7,4)")
}
帮助将不胜感激。 提前致谢。
最佳答案
您可以使用 REPLACE
而不是 SUBSTRING
像这样:
queryArgs := []interface{}{RouteAvailability.Depot}
if HPhone != "" {
strQry += ` AND REPLACE(HPhone, '-', '') = ?`
queryArgs = append(queryArgs, HPhone)
}
如果可能的话,我建议您规范化您的数据,即为特定数据类型确定规范格式,并且每次您的程序接收到一些包含该数据类型的输入时,您将其格式化为规范格式,这样您就可以避免处理SUBSTRING
,或者REPLACE
,或者多个不一致的格式等
关于mysql - 在 Go 中使用查询参数获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48303709/