MySQLのSELECT LEFT関数でスラッシュ区切りの文字列からレコードを抽出する方法
MySQLでは、LEFT関数を使うことで、文字列の先頭から指定した文字数分だけを取り出すことができます。例えば、「EMP-2110/Carol」のようなスラッシュ(/)を含む文字列から、スラッシュより前の部分だけを取得したい場合に便利です。
この記事では、実際にテーブルを作成し、LEFT関数を使ってスラッシュより前の文字列を抽出する手順を解説します。
1. テーブルの作成
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable1418
-> (
-> EmployeeCode text
-> );
Query OK, 0 rows affected (0.51 sec)2. レコードの挿入
INSERT文を使って、テーブルにデータを挿入します。従業員コードと名前がスラッシュで区切られた形式の文字列を登録します。
mysql> insert into DemoTable1418 values('EMP-2110/Carol');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1418 values('EMP-1900/David');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1418 values('EMP-2345/Mike');
Query OK, 1 row affected (0.17 sec)3. 登録したレコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1418;
実行結果は以下の通りです。
+----------------+ | EmployeeCode | +----------------+ | EMP-2110/Carol | | EMP-1900/David | | EMP-2345/Mike | +----------------+ 3 rows in set (0.00 sec)
4. LEFT関数でスラッシュより前の文字列を取得する
ここで本題のLEFT関数を使用します。「EMP-2110/Carol」のように、スラッシュより前の部分「EMP-2110」は先頭から8文字目までに相当します。そのため、left(カラム名, 8)と指定することで目的の部分だけを抽出できます。
mysql> select left(EmployeeCode,8) from DemoTable1418;
実行結果は以下の通りです。
+----------------------+ | left(EmployeeCode,8) | +----------------------+ | EMP-2110 | | EMP-1900 | | EMP-2345 | +----------------------+ 3 rows in set (0.00 sec)
補足:SUBSTRING_INDEXを使った方法
文字数が固定でない場合は、SUBSTRING_INDEX関数を使うとより柔軟に対応できます。以下のように書くことで、スラッシュより前の文字列を確実に取得できます。
mysql> select substring_index(EmployeeCode, '/', 1) from DemoTable1418;
LEFT関数は文字数が決まっている場合に、SUBSTRING_INDEX関数は区切り文字を基準に抽出したい場合にそれぞれ活用するとよいでしょう。
-
MySQLでIDが最大の行を取得する方法:ORDER BYとLIMIT OFFSETの活用テクニック
MySQLでIDが最も大きい(最大値の)行を取得したい場面は多くあります。例えば、最新のレコードや直近に登録された従業員情報を取り出すケースなどが該当します。そんなときに役立つのが、ORDER BY句とLIMIT OFFSETを組み合わせた手法です。基本構文IDの降順に並べ替え、先頭の1行だけを取得することで、IDが最大の行を選択できます。構文は以下の通りです。SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 1 OFFSET 0;ORDER BY 〜 DESCで降順ソートを行い、LIMIT 1 OFFSET 0で最初の1行のみを返します。OFFSETを
-
JavaでMySQLのSELECTクエリにPreparedStatement(プリペアドステートメント)を使う方法
executeQuery()メソッドの基本的な使い方JavaからMySQLに対してSELECTクエリを実行する場合は、PreparedStatementオブジェクトのexecuteQuery()メソッドを使用します。基本構文は以下の通りです。yourPreparedStatementObject = yourConnectionObject.prepareStatement(yourQueryName);yourResultSetObject = yourPreparedStatementObject.executeQuery();それでは、実際にサンプルデータベース「sample」を使って手