MySQLのLEFT()関数を使ってテーブル列の先頭文字を抽出する方法
MySQLでテーブルの列に格納されたデータから先頭の指定文字数を取り出したい場合、LEFT()関数を使用します。この関数は、引数として指定した文字数分だけ左側(先頭)から文字列を返します。第1引数には対象となる列名を、第2引数には取得したい文字数を指定します。
サンプルデータの確認
ここでは、学生の試験情報を格納した「examination_btech」というテーブルを例に説明します。
mysql> Select * from examination_btech; +-----------+----------+--------+ | RollNo | Name | Course | +-----------+----------+--------+ | 201712001 | Rahul | B.tech | | 201712002 | Raman | B.tech | | 201712003 | Sahil | B.tech | | 201712004 | Shalini | B.tech | | 201712005 | Pankaj | B.tech | | 201712006 | Mohan | B.tech | | 201712007 | Yash | B.tech | | 201712008 | digvijay | B.tech | | 201712009 | Gurdas | B.tech | | 201712010 | Preeti | B.tech | +-----------+----------+--------+ 10 rows in set (0.00 sec)
LEFT()関数で先頭文字を取得する
例えば、学籍番号(RollNo)の先頭6文字だけを抽出したい場合は、次のようにLEFT()関数を使います。
mysql> Select LEFT(RollNo, 6) FROM examination_btech; +-----------------+ | LEFT(RollNo, 6) | +-----------------+ | 201712 | | 201712 | | 201712 | | 201712 | | 201712 | | 201712 | | 201712 | | 201712 | | 201712 | | 201712 | +-----------------+ 10 rows in set (0.00 sec)
このように、すべての行から学籍番号の先頭6文字である「201712」が返されていることがわかります。この結果は、入学年度や学科コードなど、番号の一部だけを集計・分析したい場合に非常に便利です。
補足:AS句で見出しを見やすくする
デフォルトでは結果の列名が「LEFT(RollNo, 6)」と表示されますが、AS句を使えば任意の別名を付けることもできます。
mysql> Select LEFT(RollNo, 6) AS AdmissionYear FROM examination_btech;
また、逆に末尾から文字を抽出したい場合はRIGHT()関数、文字列の中間部分を抽出したい場合はSUBSTRING()関数を使用すると同様の操作が可能です。
-
MySQLの列に特定の単語(値)が出現する回数を取得する方法【COUNT()関数】
はじめにMySQLである特定の単語や値が、テーブルの列に何回出現するかを調べたい場合があります。たとえば「同じ名前の従業員が何人登録されているか」を確認したいときなどです。このような場合には、COUNT()関数を使用します。本記事では、サンプルテーブルを作成し、実際に特定の値の出現回数を取得する手順を解説します。1. サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable -> ( -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -
-
MySQLで一部の列名を除外してテーブルの列名を表示する方法
MySQLでテーブルの列名一覧を取得する際、特定の列だけを除外したいケースがあります。そのような場合は、システムテーブルinformation_schema.COLUMNSとNOT IN句を組み合わせることで、簡単に実現できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。顧客ID、氏名、年齢、国名、結婚有無を持つシンプルなテーブルです。mysql> create table DemoTable780 ( CustomerId int, CustomerName varchar(100), CustomerAge int, Custo