Go PostgreSQL LIKE クエリ構文
PostgreSQL と Go の pq ドライバーを使用する場合、LIKE クエリの実行時に構文に関するエラー メッセージが表示される場合があります。問題を調査して解決策を提供しましょう。
提供されたコードのクエリは次のとおりです。
SELECT p.id, p.name, p.description, p.price, p.image, p.rate FROM products AS p WHERE LOWER(p.name) LIKE %% ORDER BY p.rate DESC
このクエリを PostgreSQL で直接実行すると機能しますが、Go ではエラーが発生します。
pq: "%" またはその近くの構文エラー
問題は、正しくないことにあります。 LIKE 演算子の構文。プレースホルダーは一重引用符で囲む必要があります。
SELECT p.id, p.name, p.description, p.price, p.image, p.rate FROM products AS p WHERE LOWER(p.name) LIKE '%' || || '%' ORDER BY p.rate DESC
一重引用符を使用すると、プレースホルダーがクエリ自体の一部ではなくリテラル文字列として扱われるようになります。
さらなる構文の問題を避けるため、位置指定プレースホルダーの代わりに名前付きプレースホルダーを使用することを検討してください:
query := `SELECT p.id, p.name, p.description, p.price, p.image, p.rate FROM products AS p WHERE LOWER(p.name) LIKE '%' || :name || '%' ORDER BY p.rate DESC` product_rows, err := db.Query(query, map[string]interface{}{"name": name})
名前付きプレースホルダーを使用するとコードが増加します読みやすくなり、構文エラーのリスクが軽減されます。
以上がGo の pq ドライバーと PostgreSQL で LIKE クエリを正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。