9.5. バイナリ列関数と演算子

本節では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)intLocation of specified substringposition(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のみの表現に符号化します。サポートされる型はbase64hex、および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
アダルトレンタルサーバー