2017/12/07
ORACLEの文字列関数のリファレンスです。
※当ページにおいて、検索結果イメージの半角スペースは【_】、NULLは【NULL】と表現しています。
sponsored link
CONCAT
文法
CONCAT(引数1[文字型],引数2[文字型])
戻り値
文字型
説明
引数1と引数2を連結し戻す
引数1と引数2の両方がNULLの場合、NULLを戻す
1 2 3 4 5 6 7 8 9 10 11 12 |
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 |
備考
連結演算子(||)が用意されているため、
使いやすい連結演算子の方が使われることが多い
1 2 3 4 5 6 7 8 9 10 |
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の各単語の先頭を大文字に、それ以外を小文字に変換し戻す
1 2 3 4 5 6 7 8 9 10 11 |
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文字とカウントする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 |
1 2 3 4 5 6 7 8 9 |
SELECT a ,INSTR(a,'い') func1 ,INSTRB(a,'い') func2 FROM test_table ; A FUNC1 FUNC2 ----- ----- ----- あい 2 3 |
備考1
引数3が0の場合、0を戻す
引数3が負数の場合、末尾の指定桁からの逆順検索となる
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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以下の場合、エラーとなる
1 2 3 4 5 6 7 |
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文字とカウントする
1 2 3 4 5 6 7 8 9 10 |
SELECT a ,LENGTH(a) func1 ,LENGTHB(a) func2 FROM test_table ; A FUNC1 FUNC2 --------- ----- ----- ABCDE 5 5 あい 1 2 |
LOWER
文法
LOWER(引数1[文字型])
戻り値
文字型
説明
引数1を小文字に変換し戻す
1 2 3 4 5 6 7 8 9 10 11 |
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の桁になるまで付与し戻す
1 2 3 4 5 6 7 8 9 10 |
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の先頭から引数の桁数だけ戻す
1 2 3 4 5 6 7 8 |
SELECT a ,LPAD(a,3) func FROM test_table ; A FUNC ------ ---- ABCDE ABC |
備考2
引数1と引数2と引数3のいずれかがNULLの場合、NULLを戻す
1 2 3 4 5 6 7 8 9 10 11 12 |
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で指定した文字の全てを削除して戻す
1 2 3 4 5 6 7 8 |
SELECT a ,LTRIM(a) func FROM test_table ; A FUNC ------ ----- _ABC_ ABC_ |
1 2 3 4 5 6 7 8 9 10 11 |
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を戻す
1 2 3 4 5 6 7 8 9 10 |
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の文字列を削除し戻す
1 2 3 4 5 6 7 8 9 |
SELECT a ,b ,REPLACE(a,b) func FROM test_table ; A B FUNC ------ --- ----- ABCDE BC ADE |
1 2 3 4 5 6 7 8 9 10 11 |
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の桁になるまで付与し戻す
1 2 3 4 5 6 7 8 9 10 |
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の先頭から引数の桁数だけ戻す
1 2 3 4 5 6 7 8 |
SELECT a ,RPAD(a,3) func FROM test_table ; A FUNC ------ ---- ABCDE ABC |
備考2
引数1と引数2と引数3のいずれかがNULLの場合、NULLを戻す
1 2 3 4 5 6 7 8 9 10 |
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で指定した文字の全てを削除して戻す
1 2 3 4 5 6 7 8 |
SELECT a ,RTRIM(a) func FROM test_table ; A FUNC ------ ----- _ABC_ _ABC |
1 2 3 4 5 6 7 8 9 10 11 |
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を戻す
1 2 3 4 5 6 7 8 9 10 |
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文字とカウントする
1 2 3 4 5 6 7 8 9 10 11 12 |
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が負数の場合、末尾の文字からの指定となる
1 2 3 4 5 6 7 8 9 10 |
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を戻す
1 2 3 4 5 6 7 8 9 |
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[文字型])
戻り値
文字型
説明
シングルバイト文字を、対応するマルチバイト文字に変換し戻す
英数字や一般的な記号は有効だが、半角カナは変換できない
1 2 3 4 5 6 7 8 9 10 11 12 |
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[文字型])
戻り値
文字型
説明
マルチバイト文字を、対応するシングルバイト文字に変換し戻す
英数字や一般的な記号は有効だが、全角カナは変換できない
1 2 3 4 5 6 7 8 9 10 11 12 |
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より多い文字を指定でき、
対応する文字がない場合には削除して戻す
1 2 3 4 5 6 7 8 9 |
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のみを指定した場合は、先頭と末尾の両方から半角スペースを削除し戻す
1 2 3 4 5 6 7 8 9 10 11 |
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 |
1 2 3 4 5 6 7 8 9 10 11 |
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文字以上指定するとエラー
1 2 3 4 5 6 |
SELECT a ,TRIM('01' FROM a) func FROM test_table ; ORA-30001: 切捨てセットの文字は1つにする必要があります |
備考2
引数1と引数2のいずれかがNULLの場合、NULLを戻す
1 2 3 4 5 6 7 8 |
SELECT a ,TRIM(NULL FROM a) func FROM test_table ; A FUNC ------ ------ 0ABC0 NULL |
1 2 3 4 5 6 7 |
SELECT TRIM('0' FROM NULL) func FROM test_table ; FUNC ------ NULL |
UPPER
文法
UPPER(引数1[文字型])
戻り値
文字型
説明
引数1を大文字に変換し戻す
1 2 3 4 5 6 7 8 9 10 11 |
SELECT a ,UPPER(a) func FROM test_table ; A FUNC ---------------- ---------------- test TEST TEST TEST this is a test THIS IS A TEST NULL NULL |