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

MySQLのSUBSTRING_INDEX()関数とは?使い方と実行例をわかりやすく解説

MySQLのSUBSTRING_INDEX()関数は、指定した文字列から、区切り文字(デリミタ)が指定回数出現する位置より前の部分文字列を返す関数です。区切り文字の出現回数は、関数の引数として指定します。

例えば、メールアドレスからドメイン部分だけを取り出したり、カンマ区切りの文字列から特定の項目を抽出したりする際に非常に便利な関数です。

SUBSTRING_INDEX()関数の構文

SUBSTRING_INDEX(Str, delim, count)

各引数の意味は以下の通りです。

  • Str:部分文字列を取り出す対象となる元の文字列。
  • delim:文字列内で検索する区切り文字。
  • count:区切り文字を検索する回数。正の値を指定した場合は左から数え、負の値を指定した場合は右から数えます。

使用例

例1:2番目の区切り文字より前の文字列を取得

mysql> Select SUBSTRING_INDEX('My Name is Ram','a',2);
+-----------------------------------------+
| SUBSTRING_INDEX('My Name is Ram','a',2) |
+-----------------------------------------+
| My Name is R                            |
+-----------------------------------------+
1 row in set (0.00 sec)

上記のクエリでは、区切り文字が「a」、countが「2」であるため、文字列の左側から数えて2番目の「a」が出現する位置より前の部分文字列「My Name is R」が返されます。

例2:1番目の区切り文字より前の文字列を取得

mysql> Select SUBSTRING_INDEX('My Name is Ram','a',1);
+-----------------------------------------+
| SUBSTRING_INDEX('My Name is Ram','a',1) |
+-----------------------------------------+
| My N                                    |
+-----------------------------------------+
1 row in set (0.00 sec)

上記のクエリでは、区切り文字が「a」、countが「1」であるため、1番目の「a」が出現する位置より前の部分文字列「My N」が返されます。

まとめ

SUBSTRING_INDEX()関数を使うことで、区切り文字を基準に文字列を簡単に分割・抽出できます。countに負の値(例:-1)を指定すると、右側から数えた位置より後ろの文字列を取得できるため、実務でも柔軟に活用できます。

  1. MySQLのINSERT IGNOREステートメントとは?重複データの挿入を防ぐ方法

    INSERT IGNOREステートメントは、MySQLのテーブルに重複したデータが挿入されるのを防ぐために使用されます。通常のINSERT文の代わりにINSERT IGNOREコマンドを使うと、新規レコードが既存レコードと重複していなければ通常どおり挿入されますが、重複している場合はIGNOREキーワードによってMySQLがそのレコードを黙って破棄し、エラーを発生させません。 基本構文 INSERT IGNORE INTO table_name(...) ここで、table_nameは値を挿入したいテーブルの名前です。カラム名とVALUES句の指定方法は通常のINSERT文と同じです。 動作の

  2. MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説

    MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字