MySQLで文字列から部分文字列を抽出する方法|SUBSTRING関数の使い方を徹底解説
MySQLのSUBSTRING()関数とは
MySQLでは、SUBSTRING()関数を使うことで、文字列から任意の部分文字列(サブストリング)を抽出できます。この関数は、指定した開始位置から、指定した長さの部分文字列を返すのが基本的な動作です。
SUBSTRING()関数には、以下の4つの構文形式があります。
- SUBSTRING(str, pos)
- SUBSTRING(str FROM pos)
- SUBSTRING(str, pos, len)
- SUBSTRING(str FROM pos FOR len)
各形式の違いと動作のポイント
引数lenを指定しない形式では、文字列strのpos番目の位置から始まる部分文字列が、文字列の末尾まで返されます。
一方、引数lenを指定した形式では、pos番目の位置からlen文字分の長さの部分文字列が返されます。
また、「FROM」を使った形式は標準SQLに準拠したMySQLの正式な構文です。
負の値を指定した場合の挙動
posには負の値を指定することも可能です。この場合、部分文字列の開始位置は「文字列の先頭から」ではなく「文字列の末尾からpos文字さかのぼった位置」となります。負の値は、この関数のどの構文形式でも使用できます。
SUBSTRING()関数の使用例
実際のSQL文と実行結果を見てみましょう。
mysql> SELECT SUBSTRING('Quadratically',5);
+---------------------------------------------------------+
| SUBSTRING('Quadratically',5) |
+---------------------------------------------------------+
| ratically |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
+---------------------------------------------------------+
| SUBSTRING('foobarbar' FROM 4) |
+---------------------------------------------------------+
| barbar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('Quadratically',5,6);
+---------------------------------------------------------+
| SUBSTRING('Quadratically',5,6) |
+---------------------------------------------------------+
| ratica |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('foobarbar',-4);
+---------------------------+
| SUBSTRING('foobarbar',-4) |
+---------------------------+
| rbar |
+---------------------------+
1 row in set (0.05 sec)上記の例からわかるように、位置指定のみの場合は末尾まで、長さを指定した場合はその文字数だけ抽出されます。また、負の値を指定すると末尾から数えた位置が開始点になります。
MID()・SUBSTR()関数との関係
SUBSTRING()関数以外にも、MID()関数やSUBSTR()関数を使って文字列から部分文字列を抽出することができます。これら2つの関数は、いずれもSUBSTRING()関数の別名(シノニム)であり、まったく同じ動作をします。
用途に応じて読みやすい関数名を選択して使うとよいでしょう。
-
Pythonで文字列から部分文字列を取得する方法|スライス演算子の基本と応用
Pythonでは、文字列型は順序付けられた文字のシーケンス(並び)として扱われます。リストやタプルなど、すべてのシーケンス型と同様に文字列も「スライス」をサポートしており、スライス演算子「:」を使うことで、元の文字列から部分文字列(サブストリング)を簡単に取り出せます。基本的な使い方>>> string = Hello How are you? >>> string[6:9] Howスライス演算子「:」には2つのインデックスを指定します。1つ目のインデックス: 取得したい部分文字列の先頭文字の位置2つ目のインデックス: ここで指定した位置の手前までが抽出対象
-
Pythonで文字列から部分文字列を抽出する方法|正規表現のグループキャプチャ活用
正規表現のグループキャプチャを使った部分文字列の抽出 Pythonで文字列の中から特定の部分文字列を取り出したい場合、reモジュールの正規表現における「グループキャプチャ」を利用するのが効果的です。この手法を使うには、抽出したい部分文字列のフォーマットや、その前後の文脈をある程度把握しておく必要があります。 例えば、文章の中から「$xxx,xxx.xx」という形式で書かれた金額情報を抽出したいとします。その場合は、re.search()と括弧で囲んだキャプチャグループを次のように組み合わせます。 import re text = The phone is priced at $15,745.