mysql - 在 Go 中使用查询参数获取记录

标签 mysql go

我需要有关使用 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/

相关文章:

google-app-engine - appengine dispatch.yaml 没有找到我的模块?

mysql - 如何使用 phpMyAdmin 将 zip 文件中的数据上传到 MySQL 数据库?

php - 产品类别

php - 如何从数据库中获取数据并在 PHP 中显示?

go - 使用brew安装fluxctl

xml - 戈朗 : Compare XML structures

go - 为什么这些具有相同功能的方法写法不同?

elasticsearch - Golang : Using ElasticSearch library called Goes, 如何为 bool should 方法编写可执行代码?

mysql - 按顺序排除某些值并重复

mysql-error-1064 - 我的 SQL 表神秘丢失