index_of関数

index_of関数は、検索文字列の最初の文字(ある場合)の最初の出現時の位置を決定します。

構文

returnvalue index_of(source, search_string [, start_position])

source ::= any*
search_string ::= any*
start_position ::= integer*
returnvalue ::= integer

セマンティクス

source

検索する入力文字列。この引数は、一連の文字列に暗黙的にキャストされます。

search_string

ソースで検索する必要がある文字列。この引数は、一連の文字列に暗黙的にキャストされます。

start_position

検索を開始するソース内の位置を数値で示すオプションの整数。

デフォルトのstart_positionは0で、これはソースの最初の文字の位置でもあります。

start_positionに負の値が指定されている場合は、0とみなされます。

returnvalue

検索文字列の最初の文字の最初の出現時の位置を返します。

search_stringがソースに存在しない場合は-1を返します。

search_stringの長さが0である場合、ソースの値に対して0を返します。

引数がNULLの場合はNULLを返します。

引数が空の順序であるか、複数の項目がある順序の場合はNULLを返します。

start_position引数が整数でない場合はエラーを返します。

注意:

戻り値は、start_positionの値に関係なく、ソースの先頭の相対値になります。

例11-18 index_of関数

この例では、firstnameの"r"の索引が選択されています。

出力では、Johnにはrが含まれないため、-1が返されます。PeterとMaryには、それぞれ4と2の位置にrが含まれます。

SELECT firstname, index_of(firstname,"r") FROM users;
 +-----------+----------+
 | firstname | Column_2 |
 +-----------+----------+
 | John      |       -1 |
 | Peter     |        4 |
 | Mary      |        2 |
 +-----------+----------+

例11-19 index_of関数

この例では、firstnameの"e"の索引が選択されています。出力では、Peterにeが2つ含まれていますが、最初のオカレンスの位置のみが返されます。

SELECT firstname, index_of(firstname,"e") FROM users;
 +-----------+----------+
 | firstname | Column_2 |
 +-----------+----------+
 | John      |       -1 |
 | Peter     |        1 |
 | Mary      |       -1 |
 +-----------+----------+