MySQLで特定の文字を基準に文字列の一部を抽出する方法
MySQLでは、SUBSTRING_INDEX関数を使用することで、特定の区切り文字を基準に文字列の一部を簡単に抽出できます。この記事では、「/」で区切られたコード文字列から、3番目の要素を取り出す方法を、テーブル作成から実行結果まで具体的な例とともに解説します。
1. サンプルテーブルの作成
まず、以下のコマンドでテーブルを作成します。
mysql> create table DemoTable -> ( -> Code varchar(100) -> ); Query OK, 0 rows affected (1.07 sec)
2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにデータを挿入します。
mysql> insert into DemoTable values('/101/102/106');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('/110/111/101');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('/111/114/201');
Query OK, 1 row affected (0.47 sec)
mysql> insert into DemoTable values('/111/118');
Query OK, 1 row affected (0.13 sec)
3. テーブルの内容を確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
上記のクエリを実行すると、次のような結果が得られます。
+--------------+ | Code | +--------------+ | /101/102/106 | | /110/111/101 | | /111/114/201 | | /111/118 | +--------------+ 4 rows in set (0.00 sec)
4. 区切り文字を基準に文字列の一部を抽出するクエリ
それでは本題です。SUBSTRING_INDEX関数を入れ子にして使用することで、「/」を基準に3番目の要素を抽出できます。
mysql> select SUBSTRING_INDEX(SUBSTRING_INDEX(Code,'/',3),'/',-1) from DemoTable;
クエリの仕組み:
- 内側の
SUBSTRING_INDEX(Code,'/',3):先頭から3つ目の「/」までの部分文字列を取得します。 - 外側の
SUBSTRING_INDEX(…,'/',-1):その結果の中で最後の「/」以降の文字列(つまり3番目の要素)を取り出します。
出力結果
このクエリを実行すると、各レコードから3番目の要素が抽出され、以下のような結果が得られます。
+-----------------------------------------------------+ | SUBSTRING_INDEX(SUBSTRING_INDEX(Code,'/',3),'/',-1) | +-----------------------------------------------------+ | 102 | | 111 | | 114 | | 118 | +-----------------------------------------------------+ 4 rows in set (0.00 sec)
このように、SUBSTRING_INDEX関数を組み合わせることで、区切り文字の位置に応じた柔軟な文字列抽出が可能になります。正の値を指定すれば前からの位置、負の値を指定すれば後ろからの位置を基準に取得できるため、さまざまな場面で活用できます。
-
PHPのmb_substr()関数で文字列の一部を抽出する方法をわかりやすく解説
PHPでは、mb_substr()関数を使うことで、指定した文字列から任意の部分(部分文字列)を取り出すことができます。これはマルチバイト文字に対応した安全なsubstr()であり、文字数に基づいて動作します。位置は文字列の先頭から数えられ、最初の文字が「0」、2番目の文字が「1」というように扱われます。日本語などのマルチバイト文字列でも文字化けせずに処理できるのが大きな特徴です。 構文 string mb_substr(str $string, int $start, int $length, str $encoding) パラメータ このPHP関数は、$string、$start、$l
-
【C#】文字列内で最も多く出現する文字(最頻出文字)を取得する方法
文字列の中で最も多く出現している文字(最頻出文字)を取得するには、対象となる文字列の長さ分だけループ処理を行い、各文字の出現回数を数えていきます。その際、出現回数を記録するための新しい配列を用意し、以下のようにカウントしていきます。for (int i = 0; i < s.Length; i++) a[s[i]]++; }上記のコードで使用している主な変数は次のとおりです。String s = livelife!; int[] a = new int[maxCHARS];ここでmaxCHARSは256として定義されており、ASCII文字の