【MySQL】テーブルの列の値にLPAD()・RPAD()関数を使う方法
MySQLのテーブルに保存されている列の値に対して LPAD() 関数や RPAD() 関数を使用するには、これらの関数の第1引数として列名を指定します。そうすることで、テーブル内のすべての行の値に対して一括でパディング処理が適用されます。
以下に示す「student」テーブルを使った例を見ると、その動作がより明確になります。
例1:LPAD()関数で文字列の左側を埋める
mysql> Select Name, LPAD(Name,10,'*') from student; +---------+-------------------+ | Name | LPAD(Name,10,'*') | +---------+-------------------+ | Gaurav | ****Gaurav | | Aarav | *****Aarav | | Harshit | ***Harshit | | Gaurav | ****Gaurav | | Yashraj | ***Yashraj | +---------+-------------------+ 5 rows in set (0.08 sec)
LPAD() 関数は、文字列の左側に指定した埋め込み文字(この例では「*」)を追加し、全体の長さを第2引数で指定した桁数(ここでは10桁)に揃える関数です。
例2:RPAD()関数で文字列の右側を埋める
mysql> Select Name, RPAD(Name,10,'*') from student; +---------+-------------------+ | Name | RPAD(Name,10,'*') | +---------+-------------------+ | Gaurav | Gaurav**** | | Aarav | Aarav***** | | Harshit | Harshit*** | | Gaurav | Gaurav**** | | Yashraj | Yashraj*** | +---------+-------------------+ 5 rows in set (0.00 sec)
RPAD() 関数はその逆で、文字列の右側に指定した文字を埋め込みます。
例3:両方の関数を1つのクエリで組み合わせる
さらに、次のように1つのクエリの中で両方の関数をネスト(入れ子)して使用すれば、列の値の左右両方にパディングを施すこともできます。
mysql> Select Name, RPAD(LPAD(Name,10,'* '),14,'* ') from student; +---------+----------------------------------+ | Name | RPAD(LPAD(Name,10,'* '),14,'* ') | +---------+----------------------------------+ | Gaurav | * * Gaurav* * | | Aarav | * * *Aarav* * | | Harshit | * *Harshit* * | | Gaurav | * * Gaurav* * | | Yashraj | * *Yashraj* * | +---------+----------------------------------+ 5 rows in set (0.00 sec)
このように LPAD() と RPAD() を組み合わせることで、データの表示幅を揃えたり、レポートや出力結果を見やすく整形したりする際に非常に便利です。
-
MySQLでテーブルの値をシャッフルする方法:RAND()関数を使ったランダム並び替え
MySQLでテーブル内の値(行)の順序をランダムに入れ替えたい場合は、RAND()関数とORDER BY句を組み合わせることで簡単に実現できます。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable792 ( Name varchar(100), Subject varchar(100) ); Query OK, 0 rows affected (0.66 sec)レコードの挿入次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。mysql> insert into DemoTable79
-
MySQLで月ごとにテーブルの値を合計する方法を解説
MySQLでテーブル内の値を月ごとに合計したい場合は、EXTRACT()関数を使用します。この関数を使うことで、日付から特定の月の情報を抽出できます。例えば、年に関係なく1月のすべての価格を合計したい場合などに便利です。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1415 -> ( -> ProductPurchaseDate date, -> ProductPrice int -> ); Query OK, 0 rows affected (0.53 se