文字列を切り取る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でした。
コメント