【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