我正在使用带有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
个查询的示例,但找不到任何查询。所以想知道如何解决这个问题?
答案 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)
希望它有所帮助!