【SQL】INSERTで列の値を空白埋めや0埋めする方法


このページでは、ORACLEデータベースのSQLで、INSERT文で列の値を空白埋めや0埋めする方法を解説しています。

INSERT文のサンプルは↓で多数紹介していますので参考にしてください。
>>【SQL】INSERT文の書き方:サンプル多数あり

任意の文字列である桁数まで追加する方法

ある列や文字列、値に対して、任意の文字列をある桁数まで追加したいとき、RPAD関数やLPAD関数を使います。

次のようにSQLに記述することで、任意の文字列を追加して、ある桁数まで埋めることが出来ます。

RPAD(ある文字列,桁数,追加したい文字列)
LPAD(ある文字列,桁数,追加したい文字列)

具体的な使い方は、下記のSQLサンプルを通して解説していきます。

INSERTで列の値を空白埋めする方法

INSERTで列の値を空白埋めするときは、RPAD関数やLPAD関数を使います。

次のようなテーブルを作成し、実際にINSERTを実行していきます。

create table tab1(
    col1 varchar2(5)
    ,col2 varchar2(5)
    ,col3 number
);

RPADで右端から空白埋めする方法

RPAD関数を使って右端から空白埋めする方法を紹介します。

例えば、次のSQLでは、列の値を右から5桁になるまで空白(半角スペース)で埋めています。

insert into tab1 values('00001',RPAD('1',5,' '),RPAD(1,5,' '));
insert into tab1 values('00002',RPAD('1',5,' '),RPAD(1,5,' '));

INSERTした結果は次にようになりました。
見た目には分かりづらいですが、COL2列の値は5桁まで空白で埋められました。
さらに、数値の1を右から空白埋めしたCOL3の値は1となっていました。

SQL> select * from tab1;

COL1       COL2             COL3
---------- ---------- ----------
00001      1                   1
00002      1                   1

さらにINSERT-SELECTで、SELECTした列の値を空白埋めしてINSERTするときも同じようにRPAD関数を使います。

insert into tab1
select col1,RPAD(col2,5,' '),RPAD(col3,5,' ') from tab2 where col1 = '00003';

insert into tab1
select col1,RPAD(col2,5,' '),RPAD(col3,5,' ') from tab2 where col1 = '00004';

LPADで左端から空白埋めする方法

LPAD関数を使って左端から空白埋めする方法を紹介します。

次のSQLでは、列の値を左から5桁になるまで空白(半角スペース)で埋めています。

insert into tab1 values('00001',LPAD('1',5,' '),LPAD(1,5,' '));
insert into tab1 values('00002',LPAD('1',5,' '),LPAD(1,5,' '));

INSERTした結果は次にようになりました。
COL2列の値は左から5桁まで空白で埋められました。
さらに、数値の1を左から空白埋めしたCOL3の値は1となっていました。

SQL> select * from tab1;

COL1       COL2             COL3
---------- ---------- ----------
00001          1               1
00002          1               1

さらにINSERT-SELECTで、SELECTした列の値を空白埋めしてINSERTするときも同じようにLPAD関数を使います。

insert into tab1
select col1,LPAD(col2,5,' '),LPAD(col3,5,' ') from tab2 where col1 = '00003';
insert into tab1
select col1,LPAD(col2,5,' '),LPAD(col3,5,' ') from tab2 where col1 = '00004';

INSERTで列の値を0埋めする方法

INSERTで列の値を0埋めするときは、RPAD関数やLPAD関数を使います。

RPADで右端から0埋めする方法

0埋めも、実際にテーブルにINSERTをして登録していきます。
次のSQLでは、RPAD関数を使って、0で埋めています。

insert into tab1 values('00001',RPAD('1',5,'0'),RPAD(1,5,0));
insert into tab1 values('00002',RPAD('1',5,'0'),RPAD(1,5,0));

INSERTした結果は次の通りです。COL,COL3の値が右から0埋めされて、登録されました。

SQL> select * from tab1;

COL1       COL2             COL3
---------- ---------- ----------
00001      10000           10000
00002      10000           10000

さらにINSERT-SELECTで、SELECTした列の値を0埋めしてINSERTするときも同じようにRPAD関数を使います。

insert into tab1
select col1,RPAD(col2,5,'0'),RPAD(col3,5,0) from tab2 where col1 = '00003';
insert into tab1
select col1,RPAD(col2,5,'0'),RPAD(col3,5,0) from tab2 where col1 = '00004';

LPADで左端から0埋めする方法

左端から0埋めする場合は、LPAD関数を使います。

次のSQLでは、列の値を左から5桁になるまで0で埋めています。

insert into tab1 values('00001',LPAD('1',5,'0'),LPAD(1,5,0));
insert into tab1 values('00002',LPAD('1',5,'0'),LPAD(1,5,0));

INSERT文を実行した結果は次の通りです。
COL2列の値は「00001」という文字列に、COL3列の値は1になりました。

SQL> select * from tab1;

COL1       COL2             COL3
---------- ---------- ----------
00001      00001               1
00002      00001               1

さらにINSERT-SELECTで、SELECTした列の値を0埋めしてINSERTするときも同じようにLPAD関数を使います。

insert into tab1
select col1,LPAD(col2,5,0),LPAD(col3,5,0) from tab2 where col1 = '00003';
insert into tab1
select col1,LPAD(col2,5,0),LPAD(col3,5,0) from tab2 where col1 = '00004';

まとめ

INSERT文で、任意の文字列をある桁数まで埋めるときは、RPAD関数とLPAD関数を使います。

RPAD、LPAD関数は、指定したカラムのデータ型によって、少し結果が変わるのでよく確認しながら利用してください。

この他にも、INSERT文の様々な書き方を解説しております。
詳しくは「【SQL】INSERT文の書き方:サンプル多数あり」で解説しているのでぜひ参考にしてください。