MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでハイフン以降の文字列を抽出する方法:SUBSTRING_INDEX()の使い方

MySQLでハイフン以降の文字列を抽出する方法

MySQLでカラム内のハイフン(-)より後ろの値だけを取り出したい場合は、SUBSTRING_INDEX()関数を使用します。この関数は、指定した区切り文字を基準に文字列を分割し、必要な部分を取得できる便利な関数です。

基本的な構文は以下のとおりです。

SELECT SUBSTRING_INDEX(カラム名, '-', -1) AS 別名 FROM テーブル名;

第3引数に「-1」を指定すると、最後のハイフンより後ろにある文字列が返されます。

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> CREATE TABLE DemoTable
-> (
-> StreetName TEXT
-> );
Query OK, 0 rows affected (0.60 sec)

データの挿入

INSERTコマンドを使って、サンプルとなるレコードをいくつか挿入します。

mysql> INSERT INTO DemoTable VALUES('Paris Hill St.-CA-83745646');
Query OK, 1 row affected (0.32 sec)

mysql> INSERT INTO DemoTable VALUES('502 South Armstrong Street-9948443');
Query OK, 1 row affected (0.20 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみます。

mysql> SELECT * FROM DemoTable;

実行結果は以下のとおりです。

+------------------------------------+
| StreetName |
+------------------------------------+
| Paris Hill St.-CA-83745646 |
| 502 South Armstrong Street-9948443 |
+------------------------------------+
2 rows in set (0.00 sec)

ハイフン以降の値を抽出するクエリ

それでは、特定の文字(ここではハイフン)の後の値を抽出するクエリを実行してみましょう。

mysql> SELECT SUBSTRING_INDEX(StreetName, '-', -1) AS Split FROM DemoTable;

実行結果:

+----------+
| Split |
+----------+
| 83745646 |
| 9948443 |
+----------+
2 rows in set (0.00 sec)

各レコードから、末尾の数値(郵便番号のような値)だけが正しく抽出されていることがわかります。

SUBSTRING_INDEX()の引数のポイント

SUBSTRING_INDEX()関数の第3引数の挙動を整理しておきましょう。

  • 正の数(例:1):左から数えて指定した番目の区切り文字よりの部分を返します。
  • 負の数(例:-1):右から数えて指定した番目の区切り文字より後ろの部分を返します。

今回の例では「-1」を指定しているため、最後のハイフン以降の文字列が取得されます。「Paris Hill St.-CA-83745646」のようにハイフンが複数含まれる文字列でも、-1を指定すれば最後の区切り以降の値だけを確実に抽出できます。逆に、先頭側の部分(例:住所名)を取得したい場合は、第3引数に「1」や「2」などの正の数を指定してください。

  1. MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法

    はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036 

  2. MySQLで列の最大値を取得する方法をわかりやすく解説

    MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(