4.4. 文字列関数と演算子

このセクションでは文字列を調べたり、操作するための関数や 演算子について説明しています。この文書の中で文字列と言った場合、 CHARACTER型、CHARACTER VARYING型、 TEXT型を意味します。補足説明がない限り、ここに 書かれている関数はこれらすべての型で使用することができます。 しかし、CHARACTER型をご利用の際、自動挿入などの 影響にご注意下さい。

SQLでは、引数の区切り分けをキーワードではなく、 カンマを使用する、など明確な構文を持った文字列関数を定義しています。 詳細はTable 4-6をご覧下さい。 また、これらの関数は関数の呼び出しの際に使用するために、 通常のシンタックスでも実装されています。

Table 4-6. SQL文字列関数と演算子

関数返り値説明結果
string || string text 文字列の連係'Postgre' || 'SQL'PostgreSQL
char_length(string) or character_length(string) integer文字列の長さchar_length('jose')4
lower(string)text文字列を小文字に変換lower('TOM')tom
octet_length(string)integer文字列のバイト数octet_length('jose')4
position(substring in string) integer 指定部分文字列のある場所position('om' in 'Thomas')3
substring(string [from integer] [for integer]) text指定部分文字列の取り出しsubstring('Thomas' from 2 for 3)oma
trim([leading | trailing | both] [characters] from string) text 文字列stringの先頭/後尾/その両方から 引数文字列characters(デフォルトでは空)のみを 含む最長文字列を取り除く trim(both 'x' from 'xTomx')Tom
upper(string)text文字列を大文字に変換upper('tom')TOM

下記はその他の文字列操作の関数です。これらの関数の中には 上で述べたSQL文字列関数を解釈するために 内部で使用されているものもあります。

Table 4-7. その他の文字列関数

関数返り値説明結果
ascii(text)integer textの最初の文字のASCIIコードを返す ascii('x')120
btrim(string text, trim text) text stringの先頭/後尾から引数trim のみを含んだ、最長文字列を抜き取る btrim('xyxtrimyyx','xy')trim
chr(integer)text アスキーコードintegerを文字に変換する chr(65)A
initcap(text)text textの単語の最初の文字を大文字に変換する (スペースがセパレータ) initcap('hello thomas')Hello Thomas
lpad(string text, length integer [, fill text]) text stringlengthまで fill(ディフォルトはスペース)を 左側に追加する。もしstringlengthよりもすでに長い場合は(右に)切り捨てられる lpad('hi', 5, 'xy')xyxhi
ltrim(string text, trim text) text stringの先頭からtrim に含まれているすべての文字を削除する ltrim('zzzytrim','xyz')trim
repeat(text, integer)text textinteger回繰り返す repeat('Pg', 4)PgPgPgPg
rpad(string text, length integer [, fill text]) text stringlengthまで fill(ディフォルトはスペース)を 右側に追加する。もしstringlengthよりもすでに長い場合は切り捨てられる rpad('hi', 5, 'xy')hixyx
rtrim(string text, trim text) text stringからtrimに 含まれている文字をすべて削除する rtrim('trimxxxx','x')trim
strpos(string, substring)text 指定された部分指定文字列のロケーションを返す (position(substring in string)と同じですが、引数の順序が異ることに ご注意下さい。) strpos('high','ig')2
substr(string, from [, count]) text 文字列の指定された場所から指定された場所まで取り出す substring(string from from for count) と同じ substr('alphabet', 3, 2)ph
to_ascii(text [, encoding ]) text マルチバイトのテキストをASCIIに変換する to_ascii('Karel')Karel
translate(string text, from text, to text) text stringfromと 一致するものはtoと置き換える translate('12345', '14', 'ax')a23x5

to_asciiはLATIN1、LATIN2、WIN1250 (CP1250)との 変換のみのサポートとなっています。