【Oracle】SUBSTR・SUBSTRB で文字列を切り取る【SQL】

文字列を切り取るSUBSTR・SUBSTRB

構文

Oracleで文字列を切り取りするには、「SUBSTR」「SUBSTRB」を使います。

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

文字列の指定桁数から指定文字数を切り取ります

SUBSTRB(文字列, 開始桁, 切り取りバイト数)

文字列の指定桁数から指定バイトを切り取ります

文字数で切り取るSUBSTR、バイト数で切り取るSUBSTRBです。

 

例1. SUBSTRで文字列を切り取るパターン

--SUBSTRで切り取る 
SELECT SUBSTR('佐藤太郎',1,2) FROM DUAL;
[結果] '佐藤'

SELECT SUBSTR('12345',1,2) FROM DUAL;
[結果] '12'

「SUBSTR(‘佐藤太郎’,1,2)」で、「佐藤太郎」の1文字目から2文字分を切り取りました。

「SUBSTR(‘12345’,1,2)」で、「12345」の1文字目から2文字分を切り取りました。

例2. SUBSTRで文字列の指定桁以降を切り取るパターン

--SUBSTRで指定桁以降を切り取る 
SELECT SUBSTR('佐藤太郎',3) FROM DUAL;
[結果] '太郎'

SELECT SUBSTR('12345',3) FROM DUAL;
[結果] '345'

第3パラメータを省略すると、開始桁以降の文字列が返されます。

「SUBSTR(‘佐藤太郎’,3)」では「佐藤太郎」の3文字目以降をすべて切り取りました。

「SUBSTR(‘12345’,3)」では「12345」の3文字目以降をすべて切り取りました。

例3. SUBSTRBで文字列を切り取るパターン

--SUBSTRBで切り取る 
SELECT SUBSTRB('佐藤太郎',1,2) FROM DUAL;
[結果] '佐'

SELECT SUBSTRB('12345',1,2) FROM DUAL;
[結果] '12'

「SUBSTRB(‘佐藤太郎’,1,2)」は全角「佐藤太郎」の1バイト目から2バイトを切り取ります。2バイトで切り取るので漢字では1文字が返されます。

「SUBSTRB(‘12345’,1,2)」は「12345」の1バイト目から2バイトを切り取ります。

例4. SUBSTRBで文字列を切り取りできないパターン

--SUBSTRBで切り取りできない 
SELECT SUBSTRB('佐藤太郎',1,1) FROM DUAL;
[結果] ''

「SUBSTRB(‘佐藤太郎’,1,1)」は全角「佐藤太郎」の1バイト目から1バイトを切り取ります。

「佐」から1バイト切り取ることはできないので結果は返されませんでした。

SUBSTR・SUBSTRBで文字列から任意の文字数・バイト数を切り取りするパターンとして4パターンを取りあげました。

以上、Oracleで文字列で切り取るSUBSTR・SUBSTRBでした。

コメント