受講料が最大70%OFF 受講料が最大70%OFF

ビジネスにおいて、桁数を0で埋めるゼロパディング処理した数字が使われることがあり、これをSQLで出力することも可能です。

ただし、OracleやSQL Serverなどのデータベース管理ソフトによっては、SQLの書き方が違うので簡単に移植できないことも。そこで、今回は桁数を0で埋める処理の基本と、データベース管理ソフトの違いについて解説します。

そもそもゼロ埋めした数字とは

ゼロ埋めした数字とは、指定された桁数分、数字の左側に0を並べた数字のことです。このゼロ埋めした数字を、数量や金額の表示に使うことはありませんが、数字を使ったIDではよく使われる表現方法です。次から、一般的なゼロ埋めの数字の作り方について説明します。

ゼロ埋めした数字の例

例えば、SQLのテーブルでプライマリーキーとして使われるIDを作る場合、数字だけで作るケースもありますが、商品コードなどでは桁数が固定の数字が使われます。具体的には、6桁の数字を使う場合、6桁未満の数字では「000001」といった具合に0で埋めた数字を使うのが一般的です。

そして、このような桁数が決まった数字を表現する際、数字が存在しない桁をゼロで埋めた数字を、ゼロ埋めした数字と言います。

例えば、6桁のゼロ埋めした数字は、次のようになります。

6桁のゼロ埋めした数字の例

000001
000012
000123
001234
012345
123456

ゼロ埋めの数字を作る方法

ゼロ埋めの数字は、Excelやプログラム言語などで簡単に作ることが可能です。やり方はいろいろありますが、解りやすいゼロ埋めの数字を作る方法としては、次のような手順があります。

まず、対象の数字を文字列に変換します。そして、元の数字の桁数を調べて、桁数に応じた数のゼロを、その文字列の左側に結合します。

次に紹介する方法が、6桁の数字からゼロ埋めの数字を作る処理です。

もし、数字が10より小さいなら、”00000″ と結合する。例 “00000” + “1” = “000001”
もし、数字が10以上100より小さいなら、”0000″ と結合する。例 “0000” + “12” = “000012”
もし、数字が100以上1000より小さいなら、”000″ と結合する。例 “000” + “123” = “000123”
もし、数字が1000以上10000より小さいなら、”00″ と結合する。例 “00” + “1234” = “001234”
もし、数字が10000以上100000より小さいなら、”0″ と結合する。例 “0” + “12345” = “012345”
もし、数字が100000以上なら、そのまま文字列にする。例 “123456”

プログラム言語では書式指定でも可能

先ほど、数字を文字列に変換してゼロ埋めの数字を作る方法を紹介しましたが、多くのプログラム言語では、そのような面倒なことはしません。よく使われるのは、書式指定で作る方法です。例えば、C言語では、次のように書きます。

C言語でゼロ埋めの数字を作る方法

sprintf("%06d", number);

上記の例では、書式指定が可能なsprintf関数で、6桁の数字を指定する「%6d」に、さらに、空白をゼロ埋めを指定するため「%06d」として指定しています。

SQLでは、このような書式指定で文字列に変換する方法は使えませんが、ゼロ埋めの数字を作る関数を使って変換できます。

SQLでゼロ埋めの数字を作る方法

プログラム言語では、数字を文字列に変換すれば先ほど説明したような方法で、ゼロ埋めの数字を作ることが可能です。なお、プログラム言語によっては、組み込み関数を使うことで、もっと簡単に作ることもできます。では、SQLで作るにはどうすればよいのでしょうか。次から、SQLでゼロ埋めの数字を作る方法について紹介します。

SQLのゼロ埋めの数字を作る関数

SQLには、文字列を扱う関数が幾つもありますが、その中にゼロ埋めの数字を作る関数があり、それがLPAD関数です。そして、LPAD関数の構文は、次のとおりです。

LPADの基本

LPAD( 文字列, 文字数, 左詰めする文字 )

LPADを使った例

SELECT LPAD( num, 6, '0') FROM table1;

上の例は、テーブル「table1」に格納されているnum列の数字を、6桁で0を左詰めした文字列を表示します。

なお、LPAD関数の第1引数に指定する列名は、文字列型のものを使うのが基本です。数字型の列を使っても動作するデータベース管理ソフトがありますが、PostgreSQLなどでは正しく動作しないので、SQLを移植する際には注意してください。

LPAD関数の使用例

先ほど、LPAD関数の使い方と簡単な使用例を紹介しましたが、LDPA関数はSQLの文法さえ守っていれば、SQLのどこででも使えます。そのため、先ほどの例のようなSELECT句に続いて使うことも可能ですし、WHERE句に続く条件として利用することもできます。

LPAD関数をWHERE句に使った例

SELECT A.ID, A.KEYWORD, B.NAME 
 FROM A, B 
 WHERE A.KEYWORD = LPAD( B.NUM, 6, '0' );

上の例では、AとBの2つのテーブルを使い、テーブルBのNUM列からゼロ埋めの数字を作り、テーブルAのKEYWORDに一致しているデータのみ出力します。

ゼロの代わりに「*」を使うことも

桁数が解るように数字を表示する方法は、ゼロ埋めだけではありません。ゼロの代わりにアスタリクスが使われるケースもあります。

アスタリクスで埋めた数字の例

*****1
****12
***123
**1234
*12345
123456

これをSQLで実現する場合は、ゼロの代わりに「*」を指定します。

アスタリクスで埋めた数字を出力するSQLの例

SELECT A.ID, A.KEYWORD, B.NAME 
 FROM A, B 
 WHERE A.KEYWORD = LPAD( B.NUM, 6, '*' );

FORMAT関数を使う方法

先ほど、標準SQLに基づくゼロ埋めのやり方を紹介しましたが、データベース管理ソフト独自コマンドが使えるケースもあります。具体的には、マイクロソフト製のSQL Serverで使えるFORMAT関数です。次から、このFORMAT関数の使い方を紹介します。

マイクロソフト製品はFORMAT関数を使う

マイクロソフト製のデータベース管理ソフトでは、ゼロ埋めの数字の作成に、FORMAT関数を使います。なお、マイクロソフト製のデータベース管理ソフトとしては、SQL Serverが有名ですが、AccessでSQLを使う際もゼロ埋めはFORMAT関数であり、クラウドで利用できるAzure SQL データベースもゼロ埋めはFORMAT関数です。

FORMAT関数の使い方

FORMAT( 数字, 出力フォーマット )

FORMAT関数で指定できる出力フォーマットは、.NET Framework 形式文字列です。数字をゼロ埋めする例を次に紹介します。

FORMAT関数の例

SELECT FORMAT(1,'D4')

SELECT FORMAT(1,'0000')

上の例の出力は、どちらも「0001」です。

移植時の注意点

よく使われるデータベース管理ソフトの中で数字のゼロ埋めにFORMAT関数を使うのは、マイクロソフト製品だけです。そのため、Oracle DatabaseなどからSQLを移植する場合は、LPAD関数をFORMAT関数に置き換える必要があります。

なお、MySQLにおけるFORMAT関数は、数字をコンマ区切りで表示するための関数です。そのため、SEL ServerからMySQLにSQLを移植した場合、FORMAT関数をLPAD関数に置き換えし忘れると、FORMAT関数の引数が間違っている、といったメッセージが表示されるので注意してください。

まとめ

これまで解説したように、ゼロ埋めの数字をSQLで出力するには、LADP関数を使います。ただし、マイクロソフト製のSQL Serverなどでは、FOAMAT関数を使います。なお、LADP関数を使った場合でも、第1引数が文字列でない場合は、PostgreSQLで正しく動作しないなどの違いがあるので、SQLを移植する際は注意が必要です。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。