MySQLで先頭の文字だけ大文字にして、残りをすべて小文字に変換する方法
MySQLでは、CONCAT、UCASE、LCASEなどの文字列関数を組み合わせることで、文字列の先頭1文字だけを大文字のまま維持し、それ以降をすべて小文字に変換できます。この記事では、実際にテーブルを作成し、不揃いな大文字・小文字のデータを整形する手順を詳しく解説します。
1. テーブルを作成する
まず、サンプル用のテーブルを作成しましょう。
mysql> create table DemoTable -> ( -> Name varchar(100) -> ); Query OK, 0 rows affected (1.32 sec)
2. レコードを挿入する
INSERTコマンドを使って、大文字と小文字が混在した名前データを登録します。
mysql> insert into DemoTable values('JOhn');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('CHRIS');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('DAVID');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('RObert');
Query OK, 1 row affected (0.21 sec)
3. 現在のデータを確認する
SELECT文でテーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
+--------+ | Name | +--------+ | JOhn | | CHRIS | | DAVID | | RObert | +--------+ 4 rows in set (0.00 sec)
4. 先頭だけ大文字・残りを小文字に変換するUPDATE文
MySQLで文字列全体を小文字に変換しつつ、最初の1文字だけ大文字のまま保つには、以下のようなUPDATE文を実行します。
mysql> update DemoTable -> set Name= CONCAT(UCASE(LEFT(Name, 1)), LCASE(SUBSTRING(Name, 2))); Query OK, 4 rows affected (0.30 sec) Rows matched: 4 Changed: 4 Warnings: 0
クエリの仕組み
このクエリでは、複数の文字列関数が組み合わせて使われています。それぞれの役割は以下の通りです。
- LEFT(Name, 1):文字列の先頭1文字を取り出します。
- UCASE():取り出した先頭の文字を大文字に変換します。
- SUBSTRING(Name, 2):2文字目以降の部分文字列を取得します。
- LCASE():2文字目以降をすべて小文字に変換します。
- CONCAT():大文字化した先頭の文字と、小文字化した残りの文字列を連結します。
5. 変換後のデータを確認する
もう一度テーブルの全レコードを表示して、結果を確認しましょう。
mysql> select *from DemoTable;
出力結果
+--------+ | Name | +--------+ | John | | Chris | | David | | Robert | +--------+ 4 rows in set (0.00 sec)
このように、「JOhn」「CHRIS」「DAVID」「RObert」といった表記が不揃いなデータが、「John」「Chris」「David」「Robert」という形式に統一されました。氏名や商品名など、先頭だけ大文字にしたい(キャピタライズしたい)データを一括で整形できる、非常に便利なテクニックです。
-
MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法
はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036 
-
MySQLで文字列の最初に出現する語のみを置換する方法
REGEXP_REPLACE()で最初の出現箇所だけを置換する文字列内に同じ単語が複数回登場する場合、そのうち最初の1回だけを別の単語に置き換えたいことがあります。MySQLではREGEXP_REPLACE()関数を使うことで、この要件を簡単に実現できます。なお、この関数はMySQL 8.0以降で利用可能です。例として、次のような文字列を考えてみましょう。This is my first MySQL query. This is the first tutorial. I am learning for the first time.この文字列には「first」という単語が3回出現しますが、最