【ORACLE】文字列関数


ここではORACLEデータベースの文字列関数についてまとめて紹介しています。

ASCII関数

ASCII関数を使うことで、文字をASCIIコードに変換することができます。
※ASCII関数に文字列を引数として渡した場合は最初の一文字目の文字コードが返されます。

ASCII関数では、変換したい文字(式)または列名を指定します。

ASCII(文字)

次のSQLでは、文字の’a’をASCIIコードに変換しています。

SELECT ASCII('a') FROM dual;
ASCII('a')
------------
97

CHR関数

CHR関数を使うことで、ASCIIコードを文字に変換することができます。

CHR関数では、変換したい数値(式)を指定します。

CHR(数値)

次のSQLでは、ASCIIコードの97を文字に変換しています。

SELECT CHR(97) FROM dual;
CHR(97)
------------
a

CONCAT関数

CONCAT関数を使うことで、2つの文字列を結合することができます。
※3つ以上の文字列を結合する場合は「||」で結合します。

CONCAT関数では、結合したい文字列を順番に指定します。
文字列1と文字列2を結合した文字列を結果として返します。

CONCAT(文字列1,文字列2)

CONCAT:文字リテラルの結合

次のSQLでは、文字列ABCと文字列DEFを結合しています。

SELECT CONCAT('ABC','DEF') FROM dual;
CONCAT('ABC','DEF')
------------
ABCDEF

CONCAT:文字列の列の結合

次のSQLでは、COL1列とCOL2列の文字列を結合しています。

SELECT CONCAT('ABC','DEF') FROM dual;
CONCAT('ABC','DEF')
------------
ABCDEF

CONCAT:3つ以上の文字列の結合

SELECT 'ABC' || 'DEF' || 'GHI' FROM dual;
'ABC' || 'DEF' || 'GHI'
-----------------------
ABCDEFGHI

CONCAT:(注意点)引数がNULLの場合

文字列1がNULLの場合は文字列2を返します。

文字列2がNULLの場合は文字列2を返します。

文字列1と文字列2が両方NULLの場合は、NULLを返します。

INITCAP関数

INITCAP関数を使うことで、文字列の先頭を大文字に変換することができます。

INITCAP関数では、先頭を大文字に変換したい文字列を指定します。

INITCAP(文字列)

次の例では、文字列’abc def’のように半角スペースが入った場合はabcとdefを別の単語として認識し、先頭の文字を大文字に変換します。

SELECT INITCAP('abc'),INITCAP('abc def') FROM dual;

INITCAP('abc') INITCAP('abc def')
---------------------------------
Abc                       Abc Def

LENGTH関数

LENGTH関数を使うことで、文字列の長さを求めることができます。

LENGTH関数では、長さを求めたい文字列(式)を指定します。

LENGTH(文字列)

実行結果は次のようになります。

SELECT LENGTH('ABC') FROM dual;

LENGTH('ABC')
-------------
            3

LOWER関数

LOWER関数を使うことで、文字列を小文字に変換することができます。

LOWER関数では、小文字に変換したい文字列を指定します。

LOWER(文字列)

実行結果は次のようになります。

SELECT LOWER('ABC'),LOWER('ABC DEF') FROM dual;

LOWER('ABC') LOWER('ABC DEF')
---------------------------------
abc                       abc def

LPAD関数

LPAD関数を使うことで、文字列を指定した長さまで、任意の文字列で左から埋めることが出来ます。

[,文字列2]を指定すると任意の文字列で埋めることができます。指定しない場合は半角スペースで埋めます。

LPAD(文字列1,長さ[,文字列2])

LPAD:左端から半角スペースで埋める

SELECT LPAD('ABC',10) FROM dual;

LPAD('ABC',10)
-----------
       ABC

LPAD:左端から指定した文字列で埋める

SELECT LPAD('ABC',10,'X') FROM dual;

LPAD('ABC',10,'X')
-----------
XXXXXXXABC

LPAD:左端から0で埋める

SELECT LPAD('ABC',10,'0') FROM dual;

LPAD('ABC',10,'0')
-----------
0000000ABC

LTRIM関数

LTRIM関数を使うことで、文字列の左から空白(半角スペース)を削除することが出来ます。

第二引数を指定することで、指定した文字列を左から削除することができます。

[,文字列2]を指定することで、文字列1の左から文字列2を削除することが出来ます。

LTRIM(文字列1[,文字列2])

LTRIM:半角スペースの削除

LTRIMでは文字列の左から連続する半角スペースが削除されます。
文字列中の半角スペースは削除されません。

SELECT LTRIM(' ABC '),LTRIM('D E F') FROM dual;

LTRIM('ABC') LTRIM('D E F')
---------------------------
        ABC           D E F

LTRIM:指定した文字列の削除

SELECT LTRIM('ABC','AB') FROM dual;

LTRIM('ABC','AB')
-----------------
                C

NCHAR関数

NCHR関数を使うことで、ユニコードを文字に変換することができます。

NCHR関数では、変換したい数値(式)を指定します。

NCHR(数値)

次のSQLでは、ユニコードの97を文字に変換しています。

SELECT NCHR(97) FROM dual;
NCHR(97)
------------
a

REPLACE関数

REPLACE関数を使うことで、文字列中の文字を別の文字に置換することが出来ます。

REPLACE(文字列,置換前の文字列,置換後の文字列)

実行結果は次のようになります。

SELECT REPLACE('ABC ABC','A','S') FROM dual;

REPLACE('ABC ABC','A','S')
--------------------------
                   SBC SBC

SELECT REPLACE('ABC ABC','ABC','X') FROM dual;

REPLACE('ABC ABC','ABC','XXX')
------------------------------
                       XXX XXX

RPAD関数

RPAD関数を使うことで、文字列を指定した長さまで、任意の文字列で右から埋めることが出来ます。

[,文字列2]を指定すると任意の文字列で埋めることができます。指定しない場合は半角スペースで埋めます。

RPAD(文字列1,長さ[,文字列2])

RPAD:右端から半角スペースで埋める

SELECT RPAD('ABC',10) FROM dual;

RPAD('ABC',10)
-----------
ABC       

RPAD:右端から指定した文字列で埋める

SELECT RPAD('ABC',10,'X') FROM dual;

RPAD('ABC',10,'X')
-----------
ABCXXXXXXX

RPAD:右端から0で埋める

SELECT RPAD('ABC',10,'0') FROM dual;

RPAD('ABC',10,'0')
-----------
ABC0000000

RTRIM関数

RTRIM関数を使うことで、文字列の右から空白(半角スペース)を削除することが出来ます。

第二引数を指定することで、指定した文字列を右から削除することができます。

[,文字列2]を指定することで、文字列1の左から文字列2を削除することが出来ます。

RTRIM(文字列1[,文字列2])

RTRIM:半角スペースの削除

RTRIMでは文字列の左から連続する半角スペースが削除されます。
文字列中の半角スペースは削除されません。

SELECT RTRIM(' ABC '),RTRIM('D E F') FROM dual;

RTRIM(' ABC ')RTRIM('D E F')
----------------------------
           ABC         D E F

RTRIM:指定した文字列の削除

SELECT RTRIM('ABC','C') FROM dual;

RTRIM('ABC','C')
----------------
              AB

SUBSTR関数

SUBSTR関数を使うことで、文字列を指定した位置から、任意の文字数を切り取ることが出来ます。

文字列を指定した切り取り開始位置から、任意の文字数分で切り取ります。

SUBSTR(文字列,切り取り開始位置,文字数)

SUBSTR:先頭からn文字を切り取る

SELECT SUBSTR('ABCDEF',1,3) FROM dual;

SUBSTR('ABCDEF',1,3)
--------------------
                 ABC

SUBSTR:3文字目から文字を切り取る

SELECT SUBSTR('ABCDEF',3,5) FROM dual;

SUBSTR('ABCDEF',3,5)
--------------------
                 CDE

SUBSTR:3文字目以降の文字を切り取る

SELECT SUBSTR('ABCDEF',3) FROM dual;

SUBSTR('ABCDEF',3)
------------------
              CDEF

SUBSTR:後ろからn番目の文字を切り取る

SELECT SUBSTR('ABCDEF',-3,3) FROM dual;

SUBSTR('ABCDEF',-3,3)
---------------------
                  DEF

TRIM関数

TRIM関数を使うことで、文字列から指定した文字列を削除することができます。

[文字列2 FROM ]を指定することで、文字列1から文字列2を削除することが出来ます。

[文字列2 FROM ]を指定しない場合は、文字列1から半角スペースが削除されます。

TRIM([文字列2 FROM ] 文字列1)

TRIM:半角スペースの削除

TRIMでは文字列の前後にある半角スペースが削除されます。
文字列中の半角スペースは削除されません。

SELECT TRIM(' ABC '),TRIM('D E F') FROM dual;

TRIM('ABC') TRIM('D E F')
-------------------------
        ABC         D E F

TRIM:指定した文字列の削除

SELECT TRIM('A' FROM 'ABC') FROM dual;

TRIM('ABC')
-----------
         BC

UNICODE関数

UNICODE関数を使うことで、文字をユニコードに変換することができます。
※UNICODE関数に文字列を引数として渡した場合は最初の一文字目の文字コードが返されます。

UNICODE関数では、変換したい文字(式)または列名を指定します。

UNICODE(文字)

次のSQLでは、文字の’a’をユニコードに変換しています。

SELECT UNICODE('a') FROM dual;
UNICODE('a')
------------
97

UPPER関数

UPPER関数を使うことで、文字列を大文字に変換することができます。

UPPER関数では、大文字に変換したい文字列を指定します。

UPPER(文字列)

実行結果は次のようになります。

SELECT UPPER('abc'),UPPER('abc def') FROM dual;

UPPER('abc') UPPER('abc def')
---------------------------------
ABC                       ABC DEF