6

次のように作成されたテーブルがあります。

CREATE TABLE tbl_test
(
  id        bigserial    PRIMARY KEY,
  interest  int          ARRAY[2]
);

PGresult* res使いましたPQexec(conn, "SELECT * FROM tbl_test");

では、どうやってint[]から取得できますかPQgetvalue(res, 0, 1)
変更される可能性があるため、で定義された構造体に依存したくありませんarray.h

Postgresql のドキュメントには、実行できる API が見つかりませんでした。
お知らせ下さい。

よろしく、
マヤンク

4

1 に答える 1

7

PQgetvalue() は、バイナリ カーソルを指定しない限り、フィールド値の文字列表現を返します。どちらの場合 (文字列またはバイナリ カーソル) も、結果を操作して必要な形式にするコードを提供する必要があります。

PostgreSQLのソース コードでいくつかのアイデアが見つかるかもしれません。

  • ソース/バックエンド/ユーティリティ/adt/arrayfuncs.c
  • src/include/utils/array.h.

そして、contrib/intarray にいくつかのコードがあります。

http://doxygen.postgresql.org/で、[ファイル] をクリックし、[配列] を検索します。

PQgetvalue() が返す文字列レベルでは、カンマ区切りの文字列から整数を抽出するコードを Google で検索するのはおそらく簡単です。

于 2011-05-15T09:08:38.957 に答える