【MySQL】SUBSTR()関数でハイフン区切りの列値から中央部分を抽出して別の列に表示する方法
MySQLでは、SUBSTR()関数を使用することで、ハイフンで囲まれた列値(例:「11-84848-11」)から中央部分だけを抽出し、別の列に格納することができます。本記事では、実際にテーブルを作成しながら手順を解説します。
1. サンプルテーブルの作成
まず、テーブル「DemoTable」を作成します。
mysql> create table DemoTable -> ( -> Number varchar(100), -> Number1 varchar(100) -> ); Query OK, 0 rows affected (0.56 sec)
2. レコードの挿入
INSERTコマンドでサンプルデータを挿入します。
mysql> insert into DemoTable(Number) values('11-84848-11');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Number) values('22-99999-22');
Query OK, 1 row affected (0.13 sec)3. テーブルの内容を確認
SELECT文ですべてのレコードを表示します。
mysql> select *from DemoTable;
出力結果
+-------------+---------+ | Number | Number1 | +-------------+---------+ | 11-84848-11 | NULL | | 22-99999-22 | NULL | +-------------+---------+ 2 rows in set (0.00 sec)
4. SUBSTR()で中央部分を抽出する
次のUPDATEクエリを実行すると、「Number」列の中央部分(4文字目から5文字分)を抽出して「Number1」列に格納できます。
mysql> update DemoTable -> set Number1=SUBSTR(Number,4,5); Query OK, 2 rows affected (0.19 sec) Rows matched: 2 Changed: 2 Warnings: 0
ここで使用しているSUBSTR(文字列, 開始位置, 抽出する文字数)は、「11-84848-11」の場合、先頭から4番目の文字(8)から5文字分を取り出す指定になっています。
5. 結果の確認
再度テーブルの内容を確認してみましょう。
mysql> select *from DemoTable;
出力結果
+-------------+---------+ | Number | Number1 | +-------------+---------+ | 11-84848-11 | 84848 | | 22-99999-22 | 99999 | +-------------+---------+ 2 rows in set (0.00 sec)
このように、ハイフンで囲まれた中央部分のみが正しく抽出され、新しい列「Number1」に表示されていることがわかります。SUBSTR()関数の開始位置と文字数を調整すれば、さまざまな形式のデータに応用できます。
-
MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方
MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (
-
【MySQL入門】NULL値に応じて新しい列にカスタムテキストを表示する方法
MySQLでは、IF()関数を活用することで、カラムの値がNULLかどうかを判定し、その結果に応じて新しい列に任意のカスタムテキストを表示できます。本記事では、実際のサンプルコードとともにその手順をわかりやすく解説します。1. サンプルテーブルを作成するまず、学生名を格納するシンプルなテーブルを作成しましょう。mysql> create table DemoTable1953 ( StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. テストデータを挿入する次に、INSERT文を使ってレコ