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

本節ではbytea型の値を調べたり操作するための関数と演算子について説明します。

SQLでは、引数の区切りにカンマではなく特定のキーワードを使う特殊な構文の文字列関数を、いくつか定義しています。 詳細は表9-9を参照してください。 これら関数は通常の関数呼び出し構文を使用して実装されています。 (表9-10を参照してください。)

表 9-9. SQLバイナリ列関数と演算子

関数返り値型説明結果
string || string bytea 文字列結合 '\\\\Post'::bytea || '\\047gres\\000'::bytea\\Post'gres\000
octet_length(string)integerバイナリ列のバイト数octet_length( 'jo\\000se'::bytea)5
position(substring in string)integer指定された部分文字列の場所position('\\000om'::bytea in 'Th\\000omas'::bytea)3
substring(string [from integer] [for integer])bytea 部分文字列の取り出し substring('Th\\000omas'::bytea from 2 for 3)h\000o
trim([both] bytes from string) byteabytesで指定されるバイトのみを含む最も長い文字列をstringの先頭と末尾から削除します。 trim('\\000'::bytea from '\\000Tom\\000'::bytea)Tom
get_byte(string, offset)integer 文字列から1バイトを取り出す。 get_byte('Th\\000omas'::bytea, 4)109
set_byte(string, offset, newvalue)bytea 文字列内の1バイトを設定する。 set_byte('Th\\000omas'::bytea, 4, 64)Th\000o@as
get_bit(string, offset)integer 文字列から1ビットを取り出す。 get_bit('Th\\000omas'::bytea, 45)1
set_bit(string, offset, newvalue)bytea 文字列内の1ビットを設定する。 set_bit('Th\\000omas'::bytea, 45, 0)Th\000omAs

このほか、表9-10に列挙するバイナリ列操作関数が使えます。 そのいくつかは、表9-9で説明した標準SQLの文字列関数を実装するために内部的に使用されています。

表 9-10. その他のバイナリ列関数

関数返り値型説明結果
btrim(string bytea bytes bytea)byteabytesで指定されたバイトのみを有する最長の文字列をstringの先頭と末尾から削除します。 btrim('\\000trim\\000'::bytea, '\\000'::bytea)trim
length(string)integer バイナリ列の長さ length('jo\\000se'::bytea)5
decode(string text, type text) bytea以前にencode()で符号化されたstringからバイナリ列を復号します。 パラメータの型はencode()と同じです。 decode('123\\000456', 'escape')123\000456
encode(string bytea, type text) textバイナリ列をASCIIのみの表現に符号化します。 サポートされている型は、base64hexescapeです。 encode('123\\000456'::bytea, 'escape')123\000456