PostgreSQL 文字列を操作するサンプル

PostgreSQLの文字列を操作するサンプルです。

目次

サンプル 文字を結合する(||演算子/concat)
  文字の位置を返す(STRPOS)
  文字を置き換える(REPLACE)
  文字を置き換える(TRANSLATE)
  前ゼロ/後ろゼロをつける(LPAD/RPAD)
  指定した位置の文字を取得する(SUBSTR)
  文字列の文字数を返す(LENGTH)
  前後の空白を削除する(TRIM)
  英字の大文字と小文字を変換する(LOWER/UPPER)

文字を結合する(||演算子/concat)

select 'あいう' || 'えお' ; --あいうえお
select 'あいう' || 'えお' || 'かき' ; --あいうえおかき
select 'あいう' || null  ; 	--null

select concat('あいう', 'えお'); -- あいうえお
select concat('あいう', 'えお', 'かき'); --あいうえおかき
select concat('あいう', null); -- あいう

1行目は、||演算子で文字列のリテラルを結合しています。
2行目のように2つ以上の文字列の結合が可能です。
3行目のようにnullを結合した場合はnullになります。
5行目は、concat関数で値を結合しています。
7行目のconcat関数でnullを結合した場合の結果は||演算子と違いnullになりません。

 

文字の位置を返す(STRPOS)

STRPOS(文字列,検索する文字列)
SELECT STRPOS('あいうえ','あ'); --1
SELECT STRPOS('あいうえ','い'); --2
SELECT STRPOS('あいうえ','あいう'); --1
SELECT STRPOS('abcd','a')     ; --1
SELECT STRPOS('abcd','b')     ; --2
SELECT STRPOS('あいうえ','か'); --0

1文字目にある場合は1を返します。
6行目のように該当の文字がない場合は0を返します。

 

文字を置き換える(REPLACE)

REPLACE(文字列,置換前の文字列,置換後の文字列)
SELECT REPLACE('あいう','い','か') ; --あかう
SELECT REPLACE('あいう','いう','か') ; --あか
SELECT REPLACE('あいう','いう','かき') ; --あかき
SELECT REPLACE('あいう','いう','かきく') ; --あかきく

REPLACE関数は、2つめの引数の文字を3つめ引数の文字に置き換えます。

 

文字を置き換える(TRANSLATE)

TRANSLATE(文字列,置換前の文字,置換後の文字)
SELECT TRANSLATE('あいうえ','いう','かき') ; --あかきえ
SELECT TRANSLATE('あいうえ','あう','かき') ; --かいきえ
SELECT TRANSLATE('あいうえ','あうい','かきく') ; --かくきえ

TRANSLATE関数は、2つめの引数を文字の単位として文字を置き換えます。

 

前ゼロ/後ろゼロをつける(LPAD/RPAD)

LPAD(文字列,桁数,ゼロ(0))
RPAD(文字列,桁数,ゼロ(0))
SELECT LPAD('123','5','0') ; -- 00123
SELECT RPAD('123','5','0') ; -- 12300

LPADは、前に文字列をつけます。Lはleftです。
RPADは、後に文字列をつけます。RはRightです。

 

指定した位置の文字を取得する(SUBSTR)

SUBSTR(文字列,位置[,文字数])
SELECT SUBSTR('あいうえ','1','1') ; -- あ
SELECT SUBSTR('あいうえ','2','1') ; -- い
SELECT SUBSTR('あいうえ','1','2') ; -- あい
SELECT SUBSTR('abcd','1','1')      ; -- a
SELECT SUBSTR('abcd','1','2')      ; -- ab
SELECT SUBSTR('あいうえ','3')     ; -- うえ

SUBSTR関数の2つめの引数は開始位置で、3つめの引数は文字数です。
3つめの引数を省略すると最後の文字までが対象になります。

 

文字列の文字数を返す(LENGTH)

SELECT LENGTH('ab') ; --2
SELECT LENGTH('abc') ; --3
SELECT LENGTH('あい') ; --2
SELECT LENGTH('あいう') ; --3

LENGTHは文字数を返します。

 

前後の空白を削除する(TRIM)

SELECT TRIM(' あいうえ   ') ; --あいうえ
SELECT LTRIM(' あいうえ ') ; --あいうえ△
SELECT RTRIM(' あいうえ ') ; --△あいうえ

TRIM関数は、前後の半角スペースを削除します。全角スペースは削除しません。
LTRIMは、左側にある空白を削除します(left)。
RTRIMは、右側にある空白を削除します(right)。

 

英字の大文字と小文字を変換する(LOWER/UPPER)

SELECT LOWER('AAb100') ; --aab100
SELECT UPPER('aaB100') ; --AAB100

LOWER関数は、英字を小文字にします。
UPPER関数は、英字を大文字にします。

関連の記事

PostgreSQL if文のサンプル(PL/pgSQL)

△上に戻る