MySQLで列名に特殊文字(ハイフンなど)を使う方法を解説
MySQLで列名に特殊文字を使用するには?
MySQLでは、列名にハイフン(-)などの特殊文字を含めたい場合、バッククォート(`)で列名を囲むことで実現できます。通常の識別子として扱えない文字列も、バッククォートで囲むことでそのまま列名として使用可能になります。
ここでは、実際にテーブルを作成しながら手順を確認していきましょう。
1. 特殊文字を含む列名でテーブルを作成する
まず、「Student-Id」「Student-Name」「Student-Age」のようにハイフンを含む列名を持つテーブルを作成します。
mysql> create table DemoTable
-> (
-> `Student-Id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> `Student-Name` varchar(100),
-> `Student-Age` int
-> );
Query OK, 0 rows affected (0.55 sec)
このように、各列名をバッククォートで囲むことで、エラーなくテーブルを作成できます。
2. レコードを挿入する
次に、INSERT文を使ってテーブルにデータを追加します。INSERT文でも同様に、バッククォートで列名を囲む必要があります。
mysql> insert into DemoTable(`Student-Name`,`Student-Age`) values('Chris',21);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(`Student-Name`,`Student-Age`) values('Mike',19);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(`Student-Name`,`Student-Age`) values('Bob',18);
Query OK, 1 row affected (0.21 sec)3. データを確認する
SELECT文ですべてのレコードを表示して、正しく登録されているか確認しましょう。
mysql> select *from DemoTable;
出力結果
上記のSELECT文を実行すると、以下のような結果が出力されます。
+------------+--------------+-------------+
| Student-Id | Student-Name | Student-Age |
+------------+--------------+-------------+
| 1 | Chris | 21 |
| 2 | Mike | 19 |
| 3 | Bob | 18 |
+------------+--------------+-------------+
3 rows in set (0.00 sec)
まとめ
MySQLで列名に特殊文字を使用したい場合は、バッククォート(`)で列名を囲むことがポイントです。CREATE TABLEやINSERT、SELECTなど、SQL文の中で該当する列名を参照する際は、必ずバッククォートで囲むようにしましょう。これにより、ハイフンやスペースなどを含む列名でも問題なくデータベースを操作できます。
-
JavaでResultSetから列名を取得する方法!MySQLを使ったgetMetaData()の実装例を解説
ResultSetから列名を取得するには?getMetaData()メソッドの基本JavaでJDBCを使ってデータベース操作を行っていると、「検索結果(ResultSet)に含まれる列名(カラム名)を動的に知りたい」という場面によく出会います。そんなときに活躍するのが、getMetaData()メソッドです。このメソッドを呼び出すと、結果セットの構造情報(列の数や名前、型など)を持つResultSetMetaDataオブジェクトを取得できます。プロトタイプ宣言は以下のとおりです。ResultSetMetaData getMetaData() throws SQLException;サンプル用テ
-
MySQLでCURDATE()とLIKE句を使った部分一致検索の方法
MySQLにはCONTAINS()という名前の関数は存在しません。そのため、現在の日付(CURDATE())に関連する文字列で部分一致検索を行いたい場合は、CONCAT()関数とLIKE句を組み合わせる方法が有効です。本記事では、実際にサンプルテーブルを作成しながら、その手順を順番に解説していきます。現在の日付を確認するまず、CURDATE()関数を使って現在の日付を取得してみましょう。mysql> select curdate();実行結果は以下の通りです。+------------+ | curdate() | +------------+ | 2019-11-28 | +----