MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法

はじめに

MySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。

ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。

1. テーブルを作成する

まず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。

mysql> create table DemoTable2036
    -> (
    -> FirstLetter varchar(20),
    -> Title varchar(20)
    -> );
Query OK, 0 rows affected (1.01 sec)

2. データを挿入する

次に、INSERT文を使ってテーブルにレコードを追加します。このとき、FirstLetter 列は空のままにし、Title 列のみに値を設定します。

mysql> insert into DemoTable2036(Title) values('Chris');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable2036(Title) values('John');
Query OK, 1 row affected (0.10 sec)

mysql> insert into DemoTable2036(Title) values('Adam');
Query OK, 1 row affected (0.15 sec)

3. 現在のデータを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable2036;

実行結果は以下のとおりです。FirstLetter 列にはまだ何も入っていないため、NULL が表示されています。

+-------------+-------+
| FirstLetter | Title |
+-------------+-------+
| NULL | Chris |
| NULL | John |
| NULL | Adam |
+-------------+-------+
3 rows in set (0.00 sec)

4. LEFT() 関数で先頭の1文字を別の列に挿入する

いよいよ本題です。UPDATE文と LEFT() 関数を組み合わせることで、Title 列の値の先頭1文字を取り出し、FirstLetter 列にセットできます。

mysql> update DemoTable2036
    -> set FirstLetter=left(Title,1);
Query OK, 3 rows affected (0.23 sec)
Rows matched: 3 Changed: 3 Warnings: 0

left(Title, 1) は「Title 列の値の左端から1文字を取得する」という意味です。第2引数の数字を変更すれば、先頭から任意の文字数を取得することも可能です。

5. 更新後のデータを確認する

もう一度テーブルの内容を確認してみましょう。

mysql> select *from DemoTable2036;

実行結果を見ると、各タイトルの先頭文字が FirstLetter 列に正しく格納されていることがわかります。

+-------------+-------+
| FirstLetter | Title |
+-------------+-------+
| C | Chris |
| J | John |
| A | Adam |
+-------------+-------+
3 rows in set (0.00 sec)

まとめ

MySQLで列の値の先頭文字を別の列に挿入するには、UPDATE文と LEFT() 関数を組み合わせるのが最もシンプルな方法です。LEFT(列名, 1) と指定するだけで先頭の1文字を取得できるため、イニシャルの抽出やインデックス用データの生成など、さまざまな場面で活用できます。

  1. MySQLでGROUP BYとMIN()を使い、重複する値を持つ列ごとにタイムスタンプから最初の日付を取得する方法

    このようなケースでは、集計関数 MIN() と GROUP BY 句を組み合わせることで簡単に実現できます。まずはサンプル用のテーブルを作成しましょう。mysql> create table DemoTable1870 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value int, ShippingTimestamp varchar(100) ); Query OK, 0 rows affected (0.00 sec)次に、INSERTコマンドを使ってテーブルにレコードを挿入します。ここでは、同じ

  2. MySQLで列から最大値を取得する方法

    MySQLで列の最大値を取得するには?MySQLのテーブルから特定の列の最大値を取得するには、ORDER BY句とLIMIT句を組み合わせる方法が便利です。ここでは、実際にテーブルを作成し、データを挿入して、最大値を取得する手順を順番に解説します。1. テーブルを作成するまず、以下のコマンドでサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> Value int -> ); Query OK, 0 rows affected (0.63 sec)2. レコードを挿入する次に、INSERTコ