MySQL,LOCATE()関数で文字列の位置を取得する

スポンサーリンク

鍛錬 966

MySQL,LOCATE()関数で文字列の位置を取得する

LOCATE()関数を使用すると、特定の文字列を文字列の中から検索して、最初に出現する位置を取得することができます。
 
使用方法は、以下に示す通りです。

SELECT 文を使用して文字列の先頭から検索する場合

引数 str 内に存在する、substr が最初に出現する位置を取得します。
(存在しない場合は 0 が返されます。)

SELECT LOCATE(‘substr’, ‘str’);

 
SELECT 文を使用して指定した位置から検索する場合

引数 str に存在する、substr が最初に出現する位置を pos の位置以降から取得します。
(存在しない場合は 0 が返されます。)

SELECT LOCATE(‘substr’, ‘str’, pos);
スポンサーリンク

実行結果

以下は、特定の文字列を文字列の中から検索して、最初に出現する位置を取得しています。

先頭から検索

以下は、文字列「ABCDEF_ABCDEF」の先頭から文字列「DEF」を検索しています。

mysql> 
mysql> select locate('DEF', 'ABCDEF_ABCDEF');
+--------------------------------+
| locate('DEF', 'ABCDEF_ABCDEF') |
+--------------------------------+
|                              4 |
+--------------------------------+
1 row in set (0.00 sec)

 
上記に示した通り、文字列「DEF」が最初に出現する位置は4文字目であることが分かりました。

指定した位置から検索

以下は、文字列「ABCDEF_ABCDEF」の6文字目から文字列「DEF」を検索しています。

mysql> 
mysql> select locate('DEF', 'ABCDEF_ABCDEF', 6);
+-----------------------------------+
| locate('DEF', 'ABCDEF_ABCDEF', 6) |
+-----------------------------------+
|                                11 |
+-----------------------------------+
1 row in set (0.00 sec)

 
上記に示した通り、6文字目以降から検索した場合、文字列「DEF」が最初に出現する位置は11文字目であることが分かりました。

特定の文字列が存在しない場合

以下は、文字列「ABCDEF_ABCDEF」から文字列「XYZ」を検索しています。

mysql> 
mysql> select locate('XYZ', 'ABCDEF_ABCDEF');
+--------------------------------+
| locate('XYZ', 'ABCDEF_ABCDEF') |
+--------------------------------+
|                              0 |
+--------------------------------+
1 row in set (0.00 sec)

 
上記に示した通り、文字列「XYZ」は存在しないことが分かりました。

タイトルとURLをコピーしました