6

mysql データベースで sqlx を使用しておりauthor、特定の文字で始まる名前をテーブルに照会したいと考えています。クエリは次のとおりです。

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

しかし、私は得る

SQL 構文にエラーがあります。near '% OR last_name LIKE ?%' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

ドキュメントでLIKEクエリの例を調べましたが、見つかりませんでした。どうすればこれを修正できるのでしょうか?

4

3 に答える 3

8

そこにあるのは、、、、、、で%はないでしょうか( MySQLパラメーターのプレースホルダーが何であれ) 。??:p1:p2$1$2

私はこのようにします:

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

ワイルドカード%は、パラメーター文字列の一部である必要があります。

于 2016-10-14T09:24:18.167 に答える
1

SQL 文字列連結を使用できます。

SELECT * FROM author
WHERE first_name LIKE ? || '%' OR last_name LIKE ? || '%'
于 2016-10-14T10:19:23.200 に答える