web-dev-qa-db-ja.com

Postgres:byteaデータを部分的にオフセットと長さで選択する

5 MBの平均エントリサイズのbytea列を含むテーブルがあります。バイト文字列全体をメモリにSELECTする代わりに、byteaデータ内のランダムなポイントからクエリを実行することは可能ですか(オフセットと必要なデータ長が与えられます)。

1
Tokuchi Toa

もちろん、substring関数を使用するだけです。

_select substring(bytea_contents from offset for length) FROM table;
_

またはget_byte(bytea_contents,offset)を使用して、1バイトを整数として取得します。

すべての関数については、ドキュメントの バイナリ文字列関数と演算子 を参照してください。

2
Daniel Vérité