本節ではbytea型の値を調べたり操作するための関数と演算子について説明します。
SQLでは、引数の区切りにカンマではなく特定のキーワードを使う特殊な構文の文字列関数を、いくつか定義しています。詳細は表9-8を参照してください。これらの関数は通常の関数呼び出し構文を使用して実装されています(表9-9を参照してください)。
表 9-8. SQL Binary String Functions and Operators
| 関数 | 戻り値型 | 説明 | 例 | 結果 |
|---|
| string ||
string | bytea | 文字列結合
| E'\\\\Post'::bytea || E'\\047gres\\000'::bytea | \\Post'gres\000 |
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 |
octet_length(string) | int | バイナリ列のバイト数 | octet_length( E'jo\\000se'::bytea) | 5 |
position(substring in string) | int | 指定された部分文字列の場所 | position(E'\\000om'::bytea in E'Th\\000omas'::bytea) | 3 |
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 |
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-9に列挙するバイナリ列操作関数が使えます。そのいくつかは、表9-8で説明した標準SQLの文字列関数を実装するために内部的に使用されています。
表 9-9. その他のバイナリ列関数
| 関数 | 戻り値型 | 説明 | 例 | 結果 |
|---|
btrim(string
bytea, bytes bytea) | bytea | bytesで指定されたバイトのみを有する最長の文字列をstringの先頭と末尾から削除します。
| btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea) | trim |
decode(string text,
type text)
| bytea | 以前にencodeで符号化されたstringをバイナリ列に復号化します。
種類パラメータはencodeの指定と同じです。
| decode(E'123\\000456', 'escape') | 123\000456 |
encode(string bytea,
type text)
| text | バイト列をASCIIのみの表現に符号化します。
サポートする種類はbase64、hex、escapeです。
| encode(E'123\\000456'::bytea, 'escape') | 123\000456 |
length(string) | int | バイナリ列の長さ
| length(E'jo\\000se'::bytea) | 5 |
md5(string) | text | stringのMD5のハッシュを計算し、結果を16進数で返します。
| md5(E'Th\\000omas'::bytea) | 8ab2d3c9689aaf18 b4958c334c82d8b1 |