PostgreSQL 9.4.5文書 | |||
---|---|---|---|
前のページ | 上に戻る | 第 9章関数と演算子 | 次のページ |
本節ではbytea型の値を調べたり操作するための関数と演算子について説明します。
SQLでは、引数の区切りにカンマではなくキーワードを使う文字列関数を、いくつか定義しています。 詳細は表9-9を参照してください。 またPostgreSQLは、これらの関数に対して通常の関数呼び出し構文を使用するバージョンを提供します(表9-7を参照してください)。
注意: このページで示されるサンプル結果は、サーバパラメータであるbytea_outputがescapeに設定されていることを想定しています(この設定はPostgreSQLの伝統的な形式です)。
表 9-9. SQLバイナリ文字列関数と演算子
関数 | 戻り値型 | 説明 | 例 | 結果 |
---|---|---|---|---|
string || string | bytea | 文字列結合 | E'\\\\Post'::bytea || E'\\047gres\\000'::bytea | \\Post'gres\000 |
octet_length(string)
| int | バイナリ文字列中のバイト数 | octet_length(E'jo\\000se'::bytea) | 5 |
overlay(string placing string from int [for int])
| bytea | 部分文字列の置換 | overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 2 for 3) | T\\002\\003mas |
position(substring in string)
| int | 指定した部分文字列の位置 | position(E'\\000om'::bytea in E'Th\\000omas'::bytea) | 3 |
substring(string [from int] [for int])
| bytea | 部分文字列の抽出 | substring(E'Th\\000omas'::bytea from 2 for 3) | h\000o |
trim([both]
bytes from
string)
| bytea | 文字列stringの先頭から末尾bytesのバイトのみを含む最長の文字列を削除します。 | trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea) | Tom |
この他、表9-10に列挙するバイナリ列操作関数が使えます。 そのいくつかは、表9-9で説明した標準SQLの文字列関数を実装するために内部的に使用されています。
表 9-10. その他のバイナリ文字列関数
関数 | 戻り値型 | 説明 | 例 | 結果 |
---|---|---|---|---|
btrim(string
bytea, bytes bytea)
| bytea | bytesで指定されたバイトのみを有する最長の文字列をstringの先頭と末尾から削除します。 | btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea) | trim |
decode(string text,
format text)
| bytea | stringで表現されているテキストデータをバイナリデータに復号化します。
formatのオプションはencode と同じです。
| decode(E'123\\000456', 'escape') | 123\000456 |
encode(data bytea,
format text)
| text | バイナリデータをテキスト表現形式に符号化します。 サポートされている形式は、base64、hex、escapeです。 escapeは0バイトと最上位ビットがセットされているバイトを8進数のシーケンス(\nnn)に変換し 、バックスラッシュを二重化します。 | encode(E'123\\000456'::bytea, 'escape') | 123\000456 |
get_bit(string, offset)
| int | 文字列から1ビット抽出します。 | get_bit(E'Th\\000omas'::bytea, 45) | 1 |
get_byte(string, offset)
| int | 文字列から1バイト抽出します。 | get_byte(E'Th\\000omas'::bytea, 4) | 109 |
length(string)
| int | バイナリ文字列の長さ | length(E'jo\\000se'::bytea) | 5 |
md5(string)
| text | stringのMD5のハッシュを計算し、結果を16進数で返します。 | md5(E'Th\\000omas'::bytea) | 8ab2d3c9689aaf18 b4958c334c82d8b1 |
set_bit(string,
offset, newvalue)
| bytea | 文字列内のビットを設定します。 | set_bit(E'Th\\000omas'::bytea, 45, 0) | Th\000omAs |
set_byte(string,
offset, newvalue)
| bytea | 文字列内の1バイトを設定します。 | set_byte(E'Th\\000omas'::bytea, 4, 64) | Th\000o@as |
get_byte
とset_byte
はバイナリ列の先頭バイトを0バイトとして数えます。
get_bit
とset_bit
は各バイト内を右からビットを数えます。例えばビット0は先頭バイトの最下位ビットとなり、ビット15は第二バイトの最上位ビットとなります。