INSERT()関数を使ってMySQLテーブルの列の値に新しい文字列を挿入する方法
INSERT()関数で列の値に文字列を挿入する基本
MySQLのINSERT()関数を使って、テーブルの特定の列の値に新しい文字列を挿入したい場合は、第1引数(本来は元の文字列を指定する箇所)に列名を指定します。これにより、SELECT文の実行時に各レコードの列の値に対して文字列の挿入が行われます。
INSERT()関数の構文は以下のとおりです。
INSERT(元の文字列, 挿入開始位置, 置き換える文字数, 挿入する文字列)
挿入開始位置は1から始まり、置き換える文字数に0を指定すると、既存の文字を削除せずに指定位置へ文字列を挿入できます。
使用例:year_of_admission列に「/Old」を追加する
例として、Studentテーブルのyear_of_admission列(入学年)の各値に「/Old」という文字列を追加してみましょう。この場合、次のようなクエリを記述します。
mysql> Select INSERT(year_of_admission,5,0,'/Old')As 'Old Admissions' From Student; +-----------------+ | Old Admissions | +-----------------+ | 2001/Old | | 2010/Old | | 2009/Old | | 2017/Old | | 2000/Old | +-----------------+ 5 rows in set (0.00 sec)
上記の出力から、5番目の位置(文字列の末尾)に「/Old」が挿入され、すべての行に対して処理が適用されていることがわかります。なお、ここでは元のテーブルのデータが変更されているわけではなく、表示結果だけが加工されています。
WHERE句と組み合わせて条件を絞る
さらに、WHERE句を組み合わせることで、特定の条件を満たす行だけを対象にすることも可能です。例えば、入学年が2017年より前のレコードのみを表示したい場合は、次のようにクエリを記述します。
mysql> Select INSERT(year_of_admission,5,0,'/Old')As 'Old Admissions' From Student WHERE year_of_admission < '2017'; +----------------+ | Old Admissions | +----------------+ | 2001/Old | | 2010/Old | | 2009/Old | | 2000/Old | +----------------+ 4 rows in set (0.00 sec)
ポイントまとめ
- INSERT()関数の第1引数に列名を指定すると、その列の値を元の文字列として扱える。
- 第2引数で挿入位置、第3引数で削除する文字数(0なら純粋な挿入)、第4引数で挿入する文字列を指定する。
- WHERE句と併用すれば、条件に合致する行のみを対象にできる。
-
MySQLであるテーブルから別のテーブルへINSERT INTOし、特定の列に固定値を設定する方法
MySQLでは、INSERT INTO ... SELECT文を活用することで、既存テーブルのデータを別のテーブルへコピーしながら、同時に特定の列へ固定値を設定できます。本記事では、実際のSQLクエリ例を通じてその手順をわかりやすく解説します。手順1:元となるテーブルを作成するまず、コピー元となるテーブルを作成します。以下がそのクエリです。mysql> create table insertOneToAnotherTable -> ( -> Value int -> ); Query OK, 0 rows affected (0.60 sec)手
-
Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】
はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId