私はプログラムデータを含むpostgresqlデータベースを持っています。 Libreoffice Calcには、PostgreSQLデータベースとやりとりするBasicマクロがあり、Calcをユーザークライアントとして使用しています。 postgresqlテーブルの1つに配列があり、その配列にBasicから直接インデックスを付けることができません。 pgAdminでに示すように、ここでLibreoffice BasicからSQL配列要素へのアクセス
は、テーブルの設定です:
sq_num integer,
year_start integer,
id serial NOT NULL,
"roleArray" text[]
は私がroleArray [50]を選択してみたいと思います。基本的な結果からこれを行うすべての試みは、配列全体が渡されます。私は確かに配列を自分で分割して、私が後になっている要素を得ることができますが、私はSQL配列を使ってこのことを自動化していました。
私の基本コードでは、postgresqlデータベースへの接続にLibreoffice Baseファイルを使用しています。ベースファイルに行く、私は、「直接実行SQLコマンド」ボタンを選択しない限り、全体の配列を返すと、このクエリを実行し、個々の要素を選択しないであろうクエリを作成することはできません。
SELECT "roleArray"['50'] FROM myTableThatHasArrays
それから私は、要素を取得します50をすべてのレコードから意図したとおりに削除します。
Baseコマンドパーサーが配列のインデックス付けを処理できないバグレポートがあると私は思っています。私の質問はこれを克服する最良の方法は何ですか?
SQL配列内の要素をBasicから直接索引付けできるのが最善のシナリオです。
答えがない場合、これを回避する便利な方法は、配列全体を受け入れることです。最後に波カッコで囲まれたCSV文字列として受信されます。解決方法は、中括弧を分割してカンマで区切り、必要な要素にインデックスを付けることです。しかし、これは回避策であり、私が使用したい答えではありません。 – Smith
ようこそStackOverflowへ!試した基本コードは何ですか? –
言及しなければならないもう一つのこと:pgAdminにテーブル名を引用符で囲まないようにしてください。小文字で列名を入力しないと、これが実行されます。 – Smith