MySQLのSELECT文でカラムの値とデータ型を同時に表示する方法
MySQLでは、INFORMATION_SCHEMA.COLUMNSを利用することで、SELECT文の結果にカラムの値とともにそのデータ型を別の列として表示できます。この記事では、テーブル作成からクエリ実行までの具体的な手順をサンプルコード付きで解説します。
サンプルテーブルを作成する
まず、以下のコマンドでテーブルを作成します。
mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20) ); Query OK, 0 rows affected (0.73 sec)
レコードを挿入する
次に、INSERT文でいくつかのレコードを追加しましょう。
mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable(Name) values('Robert');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable(Name) values('Sam');
Query OK, 1 row affected (0.12 sec)
テーブルの内容を確認する
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+----+--------+ | Id | Name | +----+--------+ | 1 | Chris | | 2 | Robert | | 3 | Sam | +----+--------+ 3 rows in set (0.00 sec)
データ型と値を同時に表示するクエリ
カラムの値とそのデータ型を一緒に表示するには、対象テーブルとINFORMATION_SCHEMA.COLUMNSを結合し、DATA_TYPEを取得します。WHERE句でテーブル名(TABLE_NAME)とカラム名(COLUMN_NAME)を指定するのがポイントです。
mysql> SELECT DemoTable.Name, col1.DATA_TYPE FROM DemoTable,INFORMATION_SCHEMA.COLUMNS col1 WHERE col1.TABLE_NAME='DemoTable' AND COLUMN_NAME='Name';
実行すると、Nameカラムの値とそのデータ型「varchar」が並んで表示されます。
+--------+-----------+ | Name | DATA_TYPE | +--------+-----------+ | Chris | varchar | | Robert | varchar | | Sam | varchar | +--------+-----------+ 3 rows in set (0.04 sec)
まとめ
INFORMATION_SCHEMA.COLUMNSを参照すれば、実際のデータとカラムのデータ型を1つのクエリで同時に取得できます。動的にカラムの型情報を確認したい場合や、デバッグ・メタ情報の調査などに役立つテクニックなので、ぜひ活用してください。
-
MySQLで特定のカラムのデータをエクスポートする方法(INTO OUTFILEの使い方)
MySQLで特定のカラムのデータをエクスポートする方法 MySQLでテーブルから特定のカラム(列)のデータだけをファイルに書き出したい場合は、SELECT文とINTO OUTFILEを組み合わせるのが最もシンプルで確実な方法です。この記事では、実際にテーブルを作成し、データを投入したうえで、特定のカラムをテキストファイルへエクスポートする手順を順番に解説します。 基本構文 特定のカラムをファイルに出力する際の基本構文は次のとおりです。 select yourColumnName from yourTableName into outfile yourLocationOfFile; このように
-
MySQLでタイムスタンプ列に基づいてデータを選択し、真偽値を設定する方法
MySQLでタイムスタンプ列に基づいてデータを選択し、真偽値を設定する方法 MySQLではIF()関数を使うことで、タイムスタンプ列の値に基づいてデータを選択し、結果を真偽値(1または0)として取得できます。この記事では、実際のサンプルコードを交えながら手順を詳しく解説します。 まず、現在の日付を確認しておきましょう。 mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-12-10 | +------------+ 1 row in set (0.00 sec) テーブルの作成 はじめに