文字列関数

ORACLEの文字列関数のリファレンスです。

※当ページにおいて、検索結果イメージの半角スペースは【_】、NULLは【NULL】と表現しています。

スポンサーリンク

CONCAT

文法
CONCAT(引数1[文字型],引数2[文字型])

戻り値
文字型

説明
引数1と引数2を連結し戻す
引数1と引数2の両方がNULLの場合、NULLを戻す

SELECT a
      ,b
      ,CONCAT(a,b) func
FROM   test_table
;

A     B     FUNC
----- ----- ------
ABC   DEF   ABCDEF
NULL  DEF   DEF
ABC   NULL  ABC
NULL  NULL  NULL

備考
連結演算子(||)が用意されているため、
使いやすい連結演算子の方が使われることが多い

SELECT a
      ,b
      ,CONCAT(a,b) func
      ,a||b        oper
FROM   test_table
;

A     B     FUNC   OPER
----- ----- ------ ------
ABC   DEF   ABCDEF ABCDEF
スポンサーリンク

INITCAP

文法
INITCAP(引数1[文字型])

戻り値
文字型

説明
引数1の各単語の先頭を大文字に、それ以外を小文字に変換し戻す

SELECT a
      ,INITCAP(a) func
FROM   test_table
;

A                FUNC
---------------- ----------------
test             Test
TEST             Test
THIS IS A TEST   This Is A Test
NULL             NULL

INSTR・INSTRB

文法
INSTR(引数1[文字型],引数2[文字型])
INSTR(引数1[文字型],引数2[文字型],引数3[数値型])
INSTR(引数1[文字型],引数2[文字型],引数3[数値型],引数4[数値型])

INSTRB(引数1[文字型],引数2[文字型])
INSTRB(引数1[文字型],引数2[文字型],引数3[数値型])
INSTRB(引数1[文字型],引数2[文字型],引数3[数値型],引数4[数値型])

戻り値
数値型

説明
引数1の文字列に対して、引数2の文字列を検索し、
引数3の桁数から検索し、引数4で何番目に現れる文字列かを指定する
検索した結果、見つかった場合は先頭からの位置を戻す
見つからなかった場合は、0を戻す

引数4を省略した場合は、1(最初に見つかった文字列)と同義
引数3を省略した場合は、1(先頭から検索)と同義

INSTRは、全角文字も1文字とカウントする
INSTRBは、バイト単位でカウントするので全角文字は2文字とカウントする

SELECT a
      ,INSTR(a,'CD')      func11
      ,INSTR(a,'CD',5)    func12
      ,INSTR(a,'CD',1,2)  func13
      ,INSTRB(a,'CD')     func21
      ,INSTRB(a,'CD',5)   func22
      ,INSTRB(a,'CD',1,2) func23
FROM   test_table
;

A        FUNC11 FUNC12 FUNC13 FUNC21 FUNC22 FUNC23
-------- ------ ------ ------ ------ ------ ------
ABCDEFCD      3      7      7      3      7      7
AAAAAAAA      0      0      0      0      0      0
SELECT a
      ,INSTR(a,'い')  func1
      ,INSTRB(a,'い') func2
FROM   test_table
;

A     FUNC1 FUNC2
----- ----- -----
あい      2     3

備考1
引数3が0の場合、0を戻す
引数3が負数の場合、末尾の指定桁からの逆順検索となる

SELECT a
      ,INSTR(a,'CD',0)     func11
      ,INSTR(a,'CD',-1)    func12
      ,INSTR(a,'CD',-1,2)  func13
      ,INSTRB(a,'CD',0)    func21
      ,INSTRB(a,'CD',-1)   func22
      ,INSTRB(a,'CD',-1,2) func23
FROM   test_table
;

A        FUNC11 FUNC12 FUNC13 FUNC21 FUNC22 FUNC23
-------- ------ ------ ------ ------ ------ ------
ABCDEFCD      0      7      3      0      7      3

備考2
引数4が0以下の場合、エラーとなる

SELECT a
      ,INSTR(a,'CD',1,0)  func1
      ,INSTRB(a,'CD',1,0) func2
FROM   test_table
;

ORA-01428: 引数'0'が有効範囲外です

LENGTH・LENGTHB

文法
LENGTH(引数1[文字型])

LENGTHB(引数1[文字型])

戻り値
数値型

説明
引数1の文字列の文字数を戻す

LENGTHは、全角文字も1文字とカウントする
LENGTHBは、バイト単位でカウントするので全角文字は2文字とカウントする

SELECT a
      ,LENGTH(a)  func1
      ,LENGTHB(a) func2
FROM   test_table
;

A         FUNC1 FUNC2
--------- ----- -----
ABCDE         5     5
あい          1     2

LOWER

文法
LOWER(引数1[文字型])

戻り値
文字型

説明
引数1を小文字に変換し戻す

SELECT a
      ,LOWER(a) func
FROM   test_table
;

A                FUNC
---------------- ----------------
test             test
TEST             test
THIS IS A TEST   this is a test
NULL             NULL

LPAD

文法
LPAD(引数1[文字型],引数2[数値型])
LPAD(引数1[文字型],引数2[数値型],引数3[文字型])
※引数3を省略した場合は、半角スペース指定と同義

戻り値
文字型

説明
引数1の先頭に、引数3の文字列を引数2の桁になるまで付与し戻す

SELECT a
      ,LPAD(a,5)       func1
      ,LPAD(a,5,'0')   func2
      ,LPAD(a,5,'012') func3
FROM   test_table
;

A    FUNC1  FUNC2  FUNC3
---- ------ ------ ------
ABC  __ABC  00ABC  01ABC

備考1
引数1の桁数が引数2を超える場合、引数1の先頭から引数の桁数だけ戻す

SELECT a
      ,LPAD(a,3) func
FROM   test_table
;

A      FUNC
------ ----
ABCDE  ABC

備考2
引数1と引数2と引数3のいずれかがNULLの場合、NULLを戻す

SELECT a
      ,b
      ,c
      ,LPAD(a,b,c) func
FROM   test_table
;

A         B C     FUNC
----- ----- ----- -----
NULL      5 0     NULL
ABC    NULL 0     NULL
ABC       5 NULL  NULL

LTRIM

文法
LTRIM(引数1[文字型])
LTRIM(引数1[文字型],引数2[文字型])
※引数2を省略した場合は、半角スペースの1文字指定と同義

戻り値
文字型

説明
引数1の先頭から、引数2で指定した文字の全てを削除して戻す

SELECT a
      ,LTRIM(a) func
FROM   test_table
;

A      FUNC
------ -----
_ABC_  ABC_
SELECT a
      ,b
      ,LTRIM(a,b) func
FROM   test_table
;

A        B      FUNC
-------- ------ -----
_ABC_    _      ABC_
0ABC0    0      ABC0
0123ABC  2310   ABC

備考
引数1と引数2のいずれかがNULLの場合、NULLを戻す

SELECT a
      ,b
      ,LTRIM(a,b) func
FROM   test_table
;

A        B      FUNC
-------- ------ -----
NULL     0      NULL
0ABC0    NULL   NULL

REPLACE

文法
REPLACE(引数1[文字型],引数2[文字型])
REPLACE(引数1[文字型],引数2[文字型],引数3[文字型])
※引数3を省略した場合は、NULL指定(削除)と同義

戻り値
文字型

説明
引数1から、引数2の文字列を引数3の文字列に変換し戻す
引数3を省略した場合、または、NULL指定した場合は、引数2の文字列を削除し戻す

SELECT a
      ,b
      ,REPLACE(a,b) func
FROM   test_table
;

A      B   FUNC
------ --- -----
ABCDE  BC  ADE
SELECT a
      ,b
      ,c
      ,REPLACE(a,b,c) func
FROM   test_table
;

A      B     C     FUNC
------ ----- ----- -------
ABCDE  BC    NULL  ADE
ABCDE  BC    ZYX   AZYXDE

RPAD

文法
RPAD(引数1[文字型],引数2[数値型])
RPAD(引数1[文字型],引数2[数値型],引数3[文字型])
※引数3を省略した場合は、半角スペース指定と同義

戻り値
文字型

説明
引数1の末尾に、引数3の文字列を引数2の桁になるまで付与し戻す

SELECT a
      ,RPAD(a,5)       func1
      ,RPAD(a,5,'0')   func2
      ,RPAD(a,5,'012') func3
FROM   test_table
;

A    FUNC1  FUNC2  FUNC3
---- ------ ------ ------
ABC  ABC__  ABC00  ABC01

備考1
引数1の桁数が引数2を超える場合、引数1の先頭から引数の桁数だけ戻す

SELECT a
      ,RPAD(a,3) func
FROM   test_table
;

A      FUNC
------ ----
ABCDE  ABC

備考2
引数1と引数2と引数3のいずれかがNULLの場合、NULLを戻す

SELECT a
      ,RPAD(a,b,c) func
FROM   test_table
;

A         B C     FUNC
----- ----- ----- -----
NULL      5 0     NULL
ABC    NULL 0     NULL
ABC       5 NULL  NULL

RTRIM

文法
RTRIM(引数1[文字型])
RTRIM(引数1[文字型],引数2[文字型])
※引数2を省略した場合は、半角スペースの1文字指定と同義

戻り値
文字型

説明
引数1の末尾から、引数2で指定した文字の全てを削除して戻す

SELECT a
      ,RTRIM(a) func
FROM   test_table
;

A      FUNC
------ -----
_ABC_  _ABC
SELECT a
      ,b
      ,RTRIM(a,b) func
FROM   test_table
;

A        B      FUNC 
-------- ------ -----
_ABC_    _      _ABC
0ABC0    0      0ABC
ABC0123  2310   ABC

備考
引数1と引数2のいずれかがNULLの場合、NULLを戻す

SELECT a
      ,b
      ,RTRIM(a,b) func
FROM   test_table
;

A        B      FUNC 
-------- ------ -----
NULL     0      NULL
0ABC0    NULL   NULL

SUBSTR・SUBSTRB

文法
SUBSTR(引数1[文字型],引数2[数値型])
SUBSTR(引数1[文字型],引数2[数値型],引数3[文字型])

SUBSTRB(引数1[文字型],引数2[数値型])
SUBSTRB(引数1[文字型],引数2[数値型],引数3[文字型])

戻り値
文字型

説明
引数1の文字列に対して、引数2で指定した桁から引数3で指定した長さの分の文字列を戻す
引数3を省略した場合は、引数2で指定した桁から末尾までの文字列を戻す

SUBSTRは、全角文字も1文字とカウントする
SUBSTRBは、バイト単位でカウントするので全角文字は2文字とカウントする

SELECT a
      ,SUBSTR(a,3)    func11
      ,SUBSTR(a,3,2)  func12
      ,SUBSTRB(a,3)   func21
      ,SUBSTRB(a,3,2) func22
FROM   test_table
;

A          FUNC11    FUNC12    FUNC21    FUNC22
---------- --------- --------- --------- ---------
ABCDEF     CDEF      CD        CDEF      CD
あいうえお うえお    うえ      いうえお  い

備考1
引数2が0の場合、1として処理する
引数2が負数の場合、末尾の文字からの指定となる

SELECT a
      ,SUBSTR(a,1,3)  func1
      ,SUBSTR(a,0,3)  func2
      ,SUBSTR(a,-4,3) func3
FROM   test_table
;

A       FUNC1 FUNC2 FUNC3
------- ----- ----- -----
ABCDEF  ABC   ABC   CDE

備考2
引数3が0以下の場合、NULLを戻す

SELECT a
      ,SUBSTR(a,3,0)  func1
      ,SUBSTR(a,3,-1) func2
FROM   test_table
;

A       FUNC1 FUNC2
------- ----- -----
ABCDEF  NULL  NULL

TO_MULTI_BYTE

文法
TO_MULTI_BYTE(引数1[文字型])

戻り値
文字型

説明
シングルバイト文字を、対応するマルチバイト文字に変換し戻す
英数字や一般的な記号は有効だが、半角カナは変換できない

SELECT a
      ,TO_MULTI_BYTE(a) func
FROM   test_table
;

A    FUNC
---- --------
ABC  ABC
abc  abc
123  123
!"#  !”#
アイウ  アイウ

TO_SINGLE_BYTE

文法
TO_SINGLE_BYTE(引数1[文字型])

戻り値
文字型

説明
マルチバイト文字を、対応するシングルバイト文字に変換し戻す
英数字や一般的な記号は有効だが、全角カナは変換できない

SELECT a
      ,TO_SINGLE_BYTE(a) func
FROM   test_table
;

A       FUNC
------- -------
ABC  ABC
abc  abc
123  123
!”#  !"#
アイウ  アイウ

TRANSLATE

文法
TRANSLATE(引数1[文字型],引数2[文字型],引数3[文字型])

戻り値
文字型

説明
引数1の文字列に対して、引数2の文字を引数3の文字に置換し戻す
引数2の全ての文字を、引数3の対応する文字に置換する
引数2には引数3より多い文字を指定でき、
対応する文字がない場合には削除して戻す

SELECT a
      ,TRANSLATE(a,'BC','ZY') func1
      ,TRANSLATE(a,'BC','Z')  func2
FROM   test_table
;

A        FUNC1    FUNC2
-------- -------- --------
ABCDEBC  AZYDEZY  AZDEZ

TRIM

文法
TRIM(引数1[文字型])
TRIM(LEADING FROM 引数1[文字型])
TRIM(LEADING 引数2[文字型] FROM 引数1[文字型])
TRIM(TRAILING FROM 引数1[文字型])
TRIM(TRAILING 引数2[文字型] FROM 引数1[文字型])
TRIM(BOTH FROM 引数1[文字型])
TRIM(BOTH 引数2[文字型] FROM 引数1[文字型])
TRIM(引数2[文字型] FROM 引数1[文字型])

戻り値
文字型

説明
引数1の文字列に対して、先頭または末尾またはその両方から引数2で指定した文字を削除し戻す

LEADINGを指定すると、先頭から指定文字を削除
TRAILINGを指定すると、末尾から指定文字を削除
BOTHを指定すると、先頭と末尾の両方から指定文字を削除
いずれも指定しないと、BOTHと同義(先頭と末尾の両方)
また、引数2を省略した場合は、半角スペース指定と同義

引数1のみを指定した場合は、先頭と末尾の両方から半角スペースを削除し戻す

SELECT a
      ,TRIM(a)               func1
      ,TRIM(LEADING FROM a)  func2
      ,TRIM(TRAILING FROM a) func3
      ,TRIM(BOTH FROM a)     func4
FROM   test_table
;

A      FUNC1  FUNC2  FUNC3  FUNC4
------ ------ ------ ------ ------
_ABC_  ABC    ABC_   _ABC   ABC
SELECT a
      ,TRIM(LEADING '0' FROM a)  func1
      ,TRIM(TRAILING '0' FROM a) func2
      ,TRIM(BOTH '0' FROM a)     func3
      ,TRIM('0' FROM a)          func4
FROM   test_table
;

A      FUNC1  FUNC2  FUNC3  FUNC4
------ ------ ------ ------ ------
0ABC0  ABC0   0ABC   ABC    ABC

備考1
引数2に2文字以上指定するとエラー

SELECT a
      ,TRIM('01' FROM a) func
FROM   test_table
;

ORA-30001: 切捨てセットの文字は1つにする必要があります

備考2
引数1と引数2のいずれかがNULLの場合、NULLを戻す

SELECT a
      ,TRIM(NULL FROM a) func
FROM   test_table
;

A      FUNC
------ ------
0ABC0  NULL
SELECT TRIM('0' FROM NULL) func
FROM   test_table
;

FUNC
------
NULL

UPPER

文法
UPPER(引数1[文字型])

戻り値
文字型

説明
引数1を大文字に変換し戻す

SELECT a
      ,UPPER(a) func
FROM   test_table
;

A                FUNC
---------------- ----------------
test             TEST
TEST             TEST
this is a test   THIS IS A TEST
NULL             NULL
タイトルとURLをコピーしました