ホームページ >バックエンド開発 >Golang >Go の pq ドライバーと PostgreSQL で LIKE クエリを正しく使用するにはどうすればよいですか?

Go の pq ドライバーと PostgreSQL で LIKE クエリを正しく使用するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-12 10:49:18592ブラウズ

How to Correctly Use LIKE Queries with Go's pq Driver and PostgreSQL?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。