Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

DBMSごとの文字列を分割する関数

SQLで「文字列を分割したい」と思った時に、どの関数を使えばいいのかわからずに悩んでいるのではないでしょうか?

DBMSには、独自で文字列を分割する機能をもつ関数が用意されています。

そこでこの記事では、DBMSごとに文字列を分割する関数の使い方について解説します。

SUBSTRING関数

SUBSTRING関数は文字列の一部を分割し、取得できる関数です。

「MySQL」と「SQLServer」で使用できます。

SUBSTRING関数の使い方は次の通りです。

SUBSTRING(‘切り取る文字列’, ‘切り取り始める文字位置’, ‘切り取る文字数’);

まず切り取りたい文字列を指定し、切り取りを行いたい位置と文字数を指定すればOKです。

サンプルクエリで実行結果を確認してみましょう。

SELECT SUBSTRING('potepan', 5, 3) AS result;

■実行結果

+--------+
| result |
+--------+
| pan    |
+--------+
1 row in set (0.01 sec)

5文字目の「p」から切り取りを開始し、3文字分切り取っています。

その結果「pan」という文字が表示されました。

SUBSTRING関数はWHERE句やUPDATE句の中でも使用可能です。

簡単なサンプルで表示を確認してみましょう。

mysql> SELECT * FROM sb;
+------------+
| name       |
+------------+
| SuzukiHana |
| SuzukiMana |
| SatouMina  |
+------------+
3 rows in set (0.00 sec)

mysql> SELECT name FROM sb WHERE SUBSTRING(name, 1, 5) = 'Satou';
+-----------+
| name      |
+-----------+
| SatouMina |
+-----------+
1 row in set (0.00 sec)

このような感じで、特定の文字列のデータを取得したい場合などに使えます。

 

また、位置の指定で「文字列を左(右)から○文字取得したい」と思った場合は、LEFT関数/RIGHT関数を使うと便利です。

詳しい使用方法は、「LEFT関数とRIGHT関数の使い方」で説明します!

ポテパンダの一言メモ

MySQLかSQLServerで文字列を分割するなら、SUBSTRING関数を使おう!

Mid関数 / MidB関数

Mid関数 / MidB関数も文字列の一部を取得可能な関数です。

「Access」で使用できます。

Mid関数 / MidB関数の使い方は次の通りです。

Mid(‘切り取る文字列’, ‘切り取り始める文字位置’, ‘切り取る文字数’);
MidB(‘切り取る文字列’, ‘切り取り始める文字位置’, ‘切り取るバイト数’);

Mid関数が開始位置からの文字数分なのに対し、MidBは開始位置からのバイト数分を取り出します。

なお、切り取る文字数については省略も可能です。

省略した場合は、開始位置以降のすべての文字が返されます。

■使い方

SELECT Mid('potepan', 5, 3);
SELECT MidB('potepan', 5, 3);

実行結果は、SUBSTRING関数と同じになるはずです。

切り取る文字数を省略した場合

SELECT Mid('potepanstyle', 5);

■実行結果

panstyle

ポテパンダの一言メモ

Accessで文字列を分割するなら、Mid関数 か MidB関数を使おう!

SUBSTR関数 / SUBSTRB関数

SUBSTR関数 / SUBSTRB関数も文字列の一部を分割し、取得可能な関数です。

SUBSTR関数は「Oracle」と「PostgreSQL」で、SUBSTRB関数は「Oracle」で使用できます。

SUBSTR関数 / SUBSTRB関数の使い方は次の通りです。

SUBSTR(‘切り取る文字列’, ‘切り取り始める文字位置’, ‘切り取る文字数’);
SUBSTRB(‘切り取る文字列’, ‘切り取り始める文字位置’, ‘切り取るバイト数’);

SUBSTR関数とSUBSTRB関数も、Mid関数/MidB関数と同じように文字数分かバイト数分かで関数を使い分けます。

また、切り取る文字数の省略も可能で、開始位置以降のすべての文字が返されます。

■使い方

SELECT SUBSTR('potepan', 5, 3);
SELECT SUBSTRB('potepan', 5, 3);

こちらも実行結果は同じです。

ポテパンダの一言メモ

OracleとかPostgreSQLで文字列を分割するなら、SUBSTR関数を使おう!

OracleであればSUBSTRB関数も使えます!

STRING_SPLIT関数

「SQLServer2016」では、STRING_SPLIT関数で「文字区切り文字」を指定し、文字列の一部を分割して取得できます。

使い方は次の通りです。

STRING_SPLIT (‘文字列’ , ‘文字区切り文字‘);

今まで紹介したものとは少し使い方が異なります。

第1引数(文字列)がNULLの場合、戻り値が空の結果セットになり、引数の値がそのまま返ってきます。

また、第2引数(文字区切り文字)に複数の文字を指定してしまうとエラーになるので気をつけましょう。

STRING_SPLIT (‘potepan/style/sql’ , ‘/‘);
STRING_SPLIT (‘potepan,style,sql’ , ‘,‘);

■実行結果

value
-----------
potepan
style
sql

このように分割基準の文字ごとに文字列が分割されます。

文字区切り文字には、半角スペースを指定することも可能です。

STRING_SPLIT (‘potepan style sql learning .’ , ‘ ‘);

■実行結果

value
-----------
potepan
style
sql
learning
.

ポテパンダの一言メモ

SQLServer2016で文字列を分割するなら、STRING_SPLIT関数を使おう!

文字区切り文字を指定する、他の関数とは使い方が少し異なる関数です。

LEFT関数とRIGHT関数の使い方

これまで紹介してきた文字列を分割できる関数は、分割開始地点を指定しているものがほとんどでした。

この開始位置を左右で指定できる関数が、LEFT関数 / RIGHT関数です。

それぞれ「左から何文字目」「右から何文字目」といった指定で文字列の分割ができます。

なお、OracleではRIGHT関数は使えません。

LEFT関数 とRIGHT関数の使い方は次の通りです。

LEFT(‘切り取る文字列’, ‘切り取る文字数’);
RIGHT(‘切り取る文字列’, ‘切り取る文字数’);

SUBSTRING関数などとは異なり、切り取り始める位置が決まっているので引数は2つでOKです。

切り取る文字列の長さよりも切り取る文字数に大きい数値を指定した場合は、すべての文字列が返され、スペースによるパディングは行われません。

サンプルで表示を確認してみましょう。

mysql> SELECT LEFT('potepan', 4) AS result;
+--------+
| result |
+--------+
| pote   |
+--------+
1 row in set (0.02 sec)

mysql> SELECT RIGHT('potepan', 3) AS result;
+--------+
| result |
+--------+
| pan    |
+--------+
1 row in set (0.02 sec)

このように、期待した通りの文字を取得できます。

切り取る文字数に「0」やマイナスの値を指定すると空の結果セットが返り、NULLを指定するとNULLが返ってきます。

mysql> SELECT RIGHT('potepan', 0) AS result;
+--------+
| result |
+--------+
|        |
+--------+
1 row in set (0.01 sec)

mysql> SELECT RIGHT('potepan', -1) AS result;
+--------+
| result |
+--------+
|        |
+--------+
1 row in set (0.01 sec)

mysql> SELECT RIGHT('potepan', null) AS result;
+--------+
| result |
+--------+
| NULL   |
+--------+
1 row in set (0.01 sec)

まとめ

SQLで文字列を分割できる関数について紹介しました。

最後に、DBMSごとに使える関数をまとめます。

文字列分割を行う際は、ぜひこの記事を参考にしてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。