MySQLのSELECTでカラム名を小文字に変換して取得する方法
はじめに
MySQLでは、テーブル作成時に「UserId」や「UserFirstName」のような大文字混在のカラム名を定義しても、そのままでは定義時の表記のまま表示されます。本記事では、システムビュー INFORMATION_SCHEMA.COLUMNS と LOWER() 関数を組み合わせて、カラム名をすべて小文字に変換して一覧表示する方法を、サンプルコード付きで解説します。
1. サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserFirstName varchar(20),
UserLastName varchar(20),
UserAge int,
UserCountryName varchar(20)
);
Query OK, 0 rows affected (0.27 sec)このテーブルには、単語の先頭が大文字になっているカラムが複数含まれています。
2. テーブル構造の確認
DESC文でテーブルの構造を確認してみましょう。カラム名は定義時の大文字のまま表示されていることが分かります。
mysql> desc DemoTable;
+-----------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-------------+------+-----+---------+----------------+ | UserId | int(11) | NO | PRI | NULL | auto_increment | | UserFirstName | varchar(20) | YES | | NULL | | | UserLastName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | | UserCountryName | varchar(20) | YES | | NULL | | +-----------------+-------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec)
3. カラム名を小文字で取得するSELECT文
カラム名を小文字に変換して取得するには、以下のクエリを実行します。ポイントは、information_schema データベースの COLUMNS テーブルから COLUMN_NAME を取り出し、LOWER() 関数で小文字化している点です。
mysql> SELECT LOWER(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'DemoTable';
実行結果は次の通りです。すべてのカラム名が小文字で表示されました。
+--------------------+ | LOWER(COLUMN_NAME) | +--------------------+ | userage | | usercountryname | | userfirstname | | userid | | userlastname | +--------------------+ 5 rows in set (0.03 sec)
補足:結果を見やすく整える
見出しに表示される「LOWER(COLUMN_NAME)」という名前が気になる場合は、AS句でエイリアスを付けるとよいでしょう。また、ORDER BY句を追加すれば、カラム名をアルファベット順にソートして表示できます。
mysql> SELECT LOWER(COLUMN_NAME) AS lower_case_column
-> FROM INFORMATION_SCHEMA.COLUMNS
-> WHERE table_name = 'DemoTable'
-> ORDER BY COLUMN_NAME;なお、同名のテーブルが複数のデータベースに存在する場合は、WHERE句に「AND table_schema = 'データベース名'」を追加して対象を絞り込むと確実です。
まとめ
INFORMATION_SCHEMA.COLUMNS と LOWER() 関数を組み合わせることで、MySQLのカラム名を簡単に小文字へ変換して取得できます。命名規則の確認やドキュメント作成時に役立つテクニックなので、ぜひ活用してください。
-
MySQLで3つの列から重複しない値を抽出し、1つの列にまとめて表示する方法
MySQLでは、1つのクエリ内で UNION を複数回使うことで、複数の列に分かれている値を縦方向に結合し、重複を除いた値を1つの列として取得できます。本記事では、実際のテーブル作成からデータ挿入、そして目的の結果を得るまでの手順を順番に解説します。 サンプルテーブルの作成 まずは、3つの整数型の列を持つテーブルを作成します。 mysql> create table DemoTable -> ( -> Value1 int, -> Value2 int, -> Value3 int -> ); Query OK, 0
-
MySQLでNULLを含む列の乗算を処理する方法|COALESCE関数の使い方
MySQLでNULLを含む列の乗算を正しく計算するにはMySQLでは、数値型の列にNULLが含まれている場合、そのまま乗算すると結果もNULLになってしまいます。このような問題を回避するには、COALESCE() 関数を利用するのが効果的です。COALESCE()は、引数の中から最初に見つかった非NULLの値を返す関数で、NULLを別の値(ここでは「1」)に置き換えて計算できます。以下、実際の手順を見ていきましょう。1. サンプルテーブルを作成するまず、商品点数と金額を格納するテーブルを作成します。mysql> create table DemoTable1842 &nbs