無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

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

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

SQL では、引数の区切りにカンマではなくキーワードを使う文字列関数を、いくつか定義しています。詳細は 表9-8 を参照してください。 また PostgreSQL は、これらの関数に対して通常の関数呼び出し構文を使用するバージョンを提供します( 表9-6 を参照してください)。

注意: このページで示されるサンプル結果は、サーバパラメータである bytea_output escape に設定されていることを想定しています。(この設定はPostgreSQLの伝統的な形式です)

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

関数 戻り値型 説明 結果
string || string bytea 文字列結合 E'\\\\Post'::bytea || E'\\047gres\\000'::bytea \\Post'gres\000
octet_length( string ) int バイナリ文字列中のバイト数 octet_length(E'jo\\000se'::bytea) 5
overlay( string placing string from int [ for int ]) bytea 部分文字列の置換 overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 2 for 3) T\\002\\003mas
position( substring in string ) int 指定した部分文字列の位置 position(E'\\000om'::bytea in E'Th\\000omas'::bytea) 3
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 , format text ) bytea string で表現されているテキストデータをバイナリデータに復号化します。 format のオプションは encode と同じです。 decode(E'123\\000456', 'escape') 123\000456
encode( string bytea , format text ) text バイナリデータをテキスト表現形式に符号化します。サポートされている形式は、 base64 hex escape です。 escape は0バイトと最上位ビットがセットされているバイトを8進数のシーケンス( \ nnn )に変換し 、バックスラッシュを二重化します。 encode(E'123\\000456'::bytea, 'escape') 123\000456
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
length( string ) int バイナリ文字列の長さ length(E'jo\\000se'::bytea) 5
md5( string ) text string のMD5のハッシュを計算し、結果を16進数で返します。 md5(E'Th\\000omas'::bytea) 8ab2d3c9689aaf18 b4958c334c82d8b1
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

get_byte set_byte はバイナリ列の先頭バイトを0バイトとして数えます。 get_bit set_bit は各バイト内を右からビットを数えます。例えばビット0は先頭バイトの最下位ビットとなり、ビット15は第二バイトの最上位ビットとなります。

項9.20 における string_agg 集約関数も参照してください。


powered by SEO.CUG.NET