このセクションでは文字列を調べたり、操作するための関数や 演算子について説明しています。この文書の中で文字列と言った場合、 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 | stringにlengthまで fill(ディフォルトはスペース)を 左側に追加する。もしstringが lengthよりもすでに長い場合は(右に)切り捨てられる | lpad('hi', 5, 'xy') | xyxhi |
ltrim(string text, trim text) | text | stringの先頭からtrim に含まれているすべての文字を削除する | ltrim('zzzytrim','xyz') | trim |
repeat(text, integer) | text | textをinteger回繰り返す | repeat('Pg', 4) | PgPgPgPg |
rpad(string text, length integer [, fill text]) | text | stringにlengthまで fill(ディフォルトはスペース)を 右側に追加する。もしstringが lengthよりもすでに長い場合は切り捨てられる | 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 | stringでfromと 一致するものはtoと置き換える | translate('12345', '14', 'ax') | a23x5 |
to_asciiはLATIN1、LATIN2、WIN1250 (CP1250)との 変換のみのサポートとなっています。