如何在Go的sqlx查询中使用通配符?

如何在Go的sqlx查询中使用通配符?,go,sqlx,Go,Sqlx,我在mysql数据库中使用sqlx,希望查询author表中以某些字母开头的名称。以下是查询: sqlx.DB.Select(&authors, "SELECT * FROM author WHERE first_name LIKE ?% OR last_name LIKE ?%", letter,letter) 但我明白了 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近“%s”或姓氏,如?%” 我在文档中查找了LIKE查询的示例,但没有找到任

我在mysql数据库中使用sqlx,希望查询
author
表中以某些字母开头的名称。以下是查询:

sqlx.DB.Select(&authors, "SELECT * FROM author WHERE first_name LIKE ?% OR last_name LIKE ?%", letter,letter)
但我明白了

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近“%s”或姓氏,如?%”


我在文档中查找了
LIKE
查询的示例,但没有找到任何示例。所以想知道我该如何解决这个问题吗?

你有
%
,那些不是
:p1
:p2
$1
$2
(不管MySQL参数占位符是什么)

我想这样做:

sqlx.DB.Select(&authors, "SELECT * FROM author WHERE first_name LIKE ? OR last_name LIKE ?",
    letter+"%",letter+"%")

通配符
%
应该是参数字符串的一部分。

您可以使用SQL字符串连接:

SELECT * FROM author
WHERE first_name LIKE ? || '%' OR last_name LIKE ? || '%'

另一种方法是使用CONCAT:

sqlx.DB.Select(&authors, "SELECT * FROM author WHERE first_name LIKE CONCAT(?, '%') OR last_name LIKE CONCAT(?, '%')", letter, letter)

希望有帮助

对。但是SQL就没有那么灵活了(比如说你想搜索一个精确的匹配或者另一个通配符模式)。非常感谢。