このページでは、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文の書き方:サンプル多数あり」で解説しているのでぜひ参考にしてください。