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関数は、英字を大文字にします。
関連の記事