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

时间:2016-10-14 09:03:44

标签: go sqlx

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

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

但我得到

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   接近'%或者last_name LIKE?%'

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

3 个答案:

答案 0 :(得分:6)

那里有%,不是??:p1:p2$1,{{ 1}}(无论MySQL参数占位符是什么)

我会这样做:

$2

通配符sqlx.DB.Select(&authors, "SELECT * FROM author WHERE first_name LIKE ? OR last_name LIKE ?", letter+"%",letter+"%") 应该是参数字符串的一部分。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

另一种方法是使用CONCAT:

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

希望它有所帮助!