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

OracleのPL/SQLの文字列を操作するサンプルです。

目次

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

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

文字列を結合するサンプルです。

select 'あいう' || 'えお' from dual; --あいうえお
select concat('あいう', 'えお') from dual; --あいうえお

1行目は、||演算子で文字列のリテラルを結合しています。
2行目は、concat関数で値を結合しています。

文字の位置を返す(INSTR)

文字の位置を返すサンプルです。

SELECT INSTR('あいうえ','あ') FROM DUAL; --1
SELECT INSTR('あいうえ','い') FROM DUAL; --2
SELECT INSTR('abcd','a')      FROM DUAL; --1
SELECT INSTR('abcd','b')      FROM DUAL; --2
SELECT INSTR('あいうえ','か') FROM DUAL; --0

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

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

文字の位置をバイトで返すサンプルです。

SELECT INSTRB('あいうえ','あ') FROM DUAL; --1
SELECT INSTRB('あいうえ','い') FROM DUAL; --4
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バイトです。
4行目は、2を返します。英字は1バイトです。
5行目のように該当の文字がない場合は0を返します。

文字を置き換える(REPLACE)

文字を置き換えるサンプルです。

SELECT REPLACE('あいうえ','いう','かき') FROM DUAL; --あかきえ
SELECT REPLACE('あいうえ','あう','かき') FROM DUAL; --あいうえ

REPLACE関数は、2つめの引数の文字列の単位で文字を置き換えます。

文字を置き換える(TRANSLATE)

文字を置き換えるサンプルです。

SELECT TRANSLATE('あいうえ','いう','かき') FROM DUAL; --あかきえ
SELECT TRANSLATE('あいうえ','あう','かき') FROM DUAL; --かいきえ
SELECT TRANSLATE('あいうえ','あうい','かきく') FROM DUAL; --かくきえ

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

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

文字を置き換えるサンプルです。

SELECT LPAD('123','5','0') FROM DUAL; -- 00123
SELECT RPAD('123','5','0') FROM DUAL; -- 12300

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

指定した位置の文字を取得する(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)

指定した位置の文字を取得するサンプルです。

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バイトのためです。

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

前後の空白を削除するサンプルです。

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

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

英数字の半角を全角にする(TO_MULTI_BYTE)

英数字の半角を全角にするサンプルです。

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

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

英数字の全角を半角にする(TO_SINGLE_BYTE)

英数字の全角を半角にするサンプルです。

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

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

英字の大文字を小文字にする(LOWER)

英字の大文字を小文字にするサンプルです。

SELECT LOWER('AAb100') FROM DUAL; --aab100

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

英字の小文字を大文字にする(UPPER)

英字の小文字を大文字にするサンプルです。

SELECT UPPER('aaB100') FROM DUAL; --AAB100

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

関連の記事

Oracle 数値の計算/四捨五入/切り捨てのサンプル

△上に戻る