MySQLで文字列の最初の文字だけを大文字に変換する方法
実は、MySQLには文字列の最初の文字だけを大文字に変換する専用の関数は用意されていません。そのため、複数の関数をネスト(入れ子)にして組み合わせる必要があります。このケースでは、UPPER()関数とLOWER()関数をSUBSTRING()関数と組み合わせて使用します。
ここでは、以下に示す「emp_tbl」テーブルのデータを使って、具体的な方法を解説します。
mysql> Select * from emp_tbl; +----+----------------+ | Id | Name | +----+----------------+ | 1 | rahul singh | | 2 | gaurav kumar | | 3 | yashpal sharma | | 4 | krishan kumar | | 5 | kuldeep rai | | 6 | munish nayak | +----+----------------+ 6 rows in set (0.00 sec)
先頭文字だけを大文字にするクエリ
上記の結果セットを見ると、名前(name)の文字列の最初の文字が小文字になっていることがわかります。以下のクエリを実行すると、文字列の先頭文字だけを大文字に変換できます。
mysql> Select CONCAT(UPPER(SUBSTRING(name,1,1)),LOWER(SUBSTRING(name,2))) AS Name from emp_tbl; +----------------+ | Name | +----------------+ | Rahul singh | | Gaurav kumar | | Yashpal sharma | | Krishan kumar | | Kuldeep rai | | Munish nayak | +----------------+ 6 rows in set (0.00 sec)
クエリの仕組み
このクエリがどのように動作するのか、各関数の役割を分解して見ていきましょう。
- SUBSTRING(name, 1, 1):文字列の1文字目だけを抽出します。
- UPPER():抽出した先頭の1文字を大文字に変換します。
- SUBSTRING(name, 2):2文字目以降の文字列をすべて抽出します。
- LOWER():2文字目以降を小文字に変換します。これにより、元のデータに大文字が混在していても表記が統一されます。
- CONCAT():大文字にした先頭文字と、残りの文字列を連結して1つの文字列にします。
このように、MySQLに単一の関数が存在しない場合でも、既存の文字列関数を組み合わせることで、先頭文字だけを大文字にする処理を簡単に実現できます。同様のテクニックは、氏名や住所などのデータを整形する際にも応用できるので、覚えておくと便利です。
-
MySQLで文字列カラムから先頭15文字のみを抽出する方法
文字列の値から先頭15文字だけを取り出したい場合は、MySQLのSUBSTR()関数を使用します。この関数は指定した開始位置から指定した文字数分の部分文字列を返すため、一覧ページなどで長いタイトルの冒頭だけを表示したい場面で非常に便利です。サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable ( Title varchar(100) ); Query OK, 0 rows affected (0.69 sec)レコードを挿入する続いて、INSERT文を使ってテーブルにいくつかのレコードを追加します。mys
-
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回出現しますが、最