如何在Go的sqlx查询中使用通配符?
我在mysql数据库中使用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查询的示例,但没有找到任
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就没有那么灵活了(比如说你想搜索一个精确的匹配或者另一个通配符模式)。非常感谢。