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

目次

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

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

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

select concat('あいう', 'えお') from dual; -- あいうえお
--select concat('あいう', 'えお', 'かき') from dual; --エラー
select concat('あいう', null) from dual; -- あいう

1行目は、||演算子で文字列のリテラルを結合しています。
2行目のように2つ以上の文字列の結合が可能です。
3行目のようにnullを結合した場合も文字列は出力されます。
5行目は、concat関数で値を結合しています。
6行目のconcat関数の場合は、2つ以上の文字列の結合はエラーになります。

 

文字の位置を返す(INSTR)

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

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

 

文字の位置をバイトで返す(INSTRB)

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

1文字目にある場合は1を返します。
2行目は、4を返します。この環境の文字コードはAL32UTF8で全角は1文字3バイトです。
5行目は、2を返します。英字は1バイトです。
6行目のように該当の文字がない場合は0を返します。

 

文字を置き換える(REPLACE)

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

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

 

文字を置き換える(TRANSLATE)

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

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

 

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

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

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

 

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

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

SUBSTR関数の2つめの引数は開始位置で、3つめの引数は文字数です。

 

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

SUBSTRB(文字列,位置,文字数(バイト単位))
SELECT SUBSTRB('あいうえ','1','3') FROM DUAL; -- あ
SELECT SUBSTRB('あいうえ','4','3') FROM DUAL; -- い
SELECT SUBSTRB('あいうえ','1','6') FROM DUAL; -- あい
SELECT SUBSTRB('abcd','1','1')      FROM DUAL; -- a
SELECT SUBSTRB('abcd','1','2')      FROM DUAL; -- ab
SELECT SUBSTRB('あいうえ','6')     FROM DUAL; -- うえ

SUBSTRB関数の2つめの引数は開始位置で、3つめの引数は文字数です。
バイトの単位で指定します。
2行目の開始位置は4です。この環境の文字コードはAL32UTF8で全角は1文字3バイトのためです。

 

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

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

LENGTHは文字数を返します。

 

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

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

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

 

英数字の半角と全角を変換する(TO_MULTI_BYTE/TO_SINGLE_BYTE)

SELECT TO_MULTI_BYTE('AAb100') FROM DUAL; --AAb100
SELECT TO_SINGLE_BYTE('AAb100') FROM DUAL; --AAb100

TO_MULTI_BYTE関数は、英数字を全角にします。
TO_SINGLE_BYTE関数は、英数字を半角にします。

 

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

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

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

関連の記事

Oracle 計算/四捨五入/切り捨て/切り上げ

△上に戻る