【MySQL】LPAD()関数で9桁未満の数値の先頭に0を埋める方法
MySQLで9桁未満の数値の先頭に「0」を追加(ゼロ埋め)したい場合は、LPAD()関数を使用します。この記事では、実際にテーブルを作成し、サンプルデータを挿入して、ゼロ埋めクエリの実行結果まで順を追って解説します。
LPAD()関数とは
LPAD()は、文字列の左側に指定した文字を繰り返し追加し、全体を指定した長さに揃えるための関数です。書式は以下の通りです。
LPAD(対象文字列, 目標の長さ, 埋め込む文字)
今回のように「Value, 9, '0'」と指定すれば、9桁に満たない数値の先頭が自動的に「0」で埋められます。
1. テーブルを作成する
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable
(
Value varchar(20)
);
Query OK, 0 rows affected (0.55 sec)
2. サンプルデータを挿入する
INSERTコマンドを使って、いくつかのレコードを登録します。ここでは、9桁未満の数値と10桁の数値を混ぜて挿入しています。
mysql> insert into DemoTable values('3646465');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable values('9485757591');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('485756');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('959585');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('124');
Query OK, 1 row affected (0.27 sec)
3. テーブルの中身を確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下のようになります。
+------------+ | Value | +------------+ | 3646465 | | 9485757591 | | 485756 | | 959585 | | 124 | +------------+ 5 rows in set (0.00 sec)
4. 9桁未満の数値に0を追加するクエリ
それでは、本題であるゼロ埋めのクエリを実行します。LPAD()の第2引数に「9」、第3引数に「'0'」を指定します。
mysql> select lpad(Value,9,'0') from DemoTable;
実行結果は以下の通りです。
+-------------------+ | lpad(Value,9,'0') | +-------------------+ | 003646465 | | 948575759 | | 000485756 | | 000959585 | | 000000124 | +-------------------+ 5 rows in set (0.03 sec)
注意点:目標の長さを超える場合は切り捨てられる
出力結果を見ると、「9485757591」(10桁)が「948575759」(9桁)になっていることがわかります。これは、LPAD()では指定した長さを超える文字列は右側が切り捨てられるためです。
そのため、桁数が目標より多いデータが存在する可能性がある場合は、LENGTH()などで事前に桁数をチェックし、条件分岐させるなどの対策を検討するとよいでしょう。
-- 例:9桁以上のデータはそのまま表示する mysql> select case when length(Value) >= 9 then Value else lpad(Value,9,'0') end from DemoTable;
まとめ
MySQLで9桁未満の数値の先頭に0を追加するには、LPAD(カラム名, 9, '0') を使うのが最もシンプルな方法です。IDやコード類を固定桁数で管理したい場合に非常に便利なので、ぜひ活用してください。
-
JavaとMySQLで現在の日付に月数を追加する方法(INTERVAL句の使い方)
JavaとMySQLを組み合わせて現在の日付に月数を追加するには、INTERVAL句を使用します。以下がその基本構文です。 String query; query = insert into テーブル名 values(curdate()+interval 追加する月数 month); 現在の日付を確認する まず、curdate()関数を使って現在の日付を確認してみましょう。 mysql> select curdate(); +------------+ | curdate() | +------------+ | 2020-10-25 | +------------+ 1 row in
-
C++でY以下となる数値集合の最小個数を求めるアルゴリズム
問題の概要連続した数字からなる文字列と数値 Y が与えられます。このとき、以下のルールをすべて満たす集合の最小個数を求めるのが課題です。各集合は、元の文字列から連続して取り出した数字で構成すること同じ桁(文字)を複数回使用してはならない集合内の数値は Y を超えてはならない入力例と出力例たとえば、str = 1234、Y = 20 とすると、次のように 3 つの集合に分割できるため、答えは 3 になります。{12}, {3}, {4}{12} は 20 以下であり、{3} と {4} もそれぞれ 20 以下です。すべての数字が一度ずつ使われていることも確認できます。アルゴリズムこの問題は貪欲法