本節ではbytea型の値を調べたり操作するための関数と演算子について説明します。
SQLでは、引数の区切りにカンマではなく特定のキーワードを使う特殊な構文の文字列関数を、いくつか定義しています。詳細は表9-8を参照してください。これらの関数は通常の関数呼び出し構文を使用して実装されています(表9-9を参照してください)。
表 9-8. SQLバイナリ文字列関数と演算子
| 関数 | 戻り値型 | 説明 | 例 | 結果 |
|---|
| 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 | Location of specified substring | 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 |