ホームページ >バックエンド開発 >Golang >lib/pq SQL クエリでスライス引数を処理するにはどうすればよいですか?

lib/pq SQL クエリでスライス引数を処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-19 12:06:10352ブラウズ

How to Handle Slice Arguments in lib/pq SQL Queries?

パラメータ変換エラー: クエリではスライスがサポートされていません

lib/pq を使用して SQL クエリを実行する場合、パラメータの型が次のとおりであることを確認することが重要です。サポートされました。あるインスタンスでは、次のコードでエラーが発生しました:

somevars := []int{1, 2, 3, 4}
rows, err = db.Query("SELECT c1,c2 FROM table"+tid+" WHERE c1 IN(,,,);", somevars)

エラー メッセージは次のことを示しました: "sql: 引数 $1 の変換型: サポートされていない型 []int、int のスライス"。このエラーは、lib/pq がスライスを引数として直接処理できないことを示しています。

解決策: pq.Array の使用

この問題を解決するには、pq.Array を利用できます。この関数は Go スライスを Postgres ARRAY に変換し、クエリによって認識されます。

以下の変更されたコードはこれを示しています。

somevars := []int{1, 2, 3, 4}
rows, err = db.Query("SELECT c1,c2 FROM table"+tid+" WHERE c1 = any();", pq.Array(somevars))

pq.Array を使用すると、スライスは次のようになります。 ARRAY に変換され、クエリ内の有効な引数として使用できるようになります。これにより、スライス引数を使用したクエリのシームレスな実行が可能になります。

以上がlib/pq SQL クエリでスライス引数を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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