6.5. バイナリ列関数と演算子
この節ではバイナリ列の値を調べたり操作するための関数と演算子について説明します。この文書の中で文字列とは BYTEA データ型の値を含みます。
SQL では、引数の区切りにコンマではなく特定のキーワードを使う特殊な構文の文字列関数を、いくつか定義しています。詳細は Table 6-9 を参照してください。これら関数は通常の関数呼び出し構文によっても実装されています。Table 6-10 を参照。
Table 6-9. SQL バイナリ列関数と演算子
関数 | 返り値型 | 説明 | 例 | 結果 |
---|
string || string
| bytea | 文字列結合
| '\\\\Post'::bytea || '\\047greSQL\\000'::bytea | \\Post'greSQL\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]
characters from
string)
| bytea | characters で指定される列のみを含む最も長い文字列を string の最初、最後、そして両側から削除します。
| trim('\\000'::bytea from '\\000Tom\\000'::bytea) | Tom |
このほか、Table 6-10 に列挙するバイナリ文字列操作関数が使えます。 そのいくつかは、Table 6-9 で説明した SQL 標準文字列関数を実装するため、内部的に使用されます。
Table 6-10. その他のバイナリ列関数
関数 | 返り値型 | 説明 | 例 | 結果 |
---|
btrim(string bytea trim bytea) | bytea | trim で指定された文字のみを有する最長の文字列を string の先頭と末尾から削除します。
| btrim('\\000trim\\000'::bytea,'\\000'::bytea) | trim |
length(string) | integer | バイナリ列の長さ
| length('jo\\000se'::bytea) | 5 |
encode(string bytea,
type text)
| text (テキスト) | バイナリ列を ASCII のみの表現に符号化します。 サポートされている型は、base64、hex、escape です。
| encode('123\\000456'::bytea, 'escape') | 123\000456 |
decode(string text,
type text)
| bytea | 以前に encode() で符号化された string からバイナリ列を復号します。 パラメータの型は encode() と同じです。
| decode('123\\000456', 'escape') | 123\000456 |