INSTR
説明
INSTR関数は、メイン文字列内で部分文字列が最初に出現する位置を返します。位置のカウントは1から始まります。これは完全一致をサポートし、大文字と小文字を区別する、一般的に使用される文字列検索関数です。この関数は、テキスト処理、データクリーニング、文字列解析で広く使用されています。
構文
INSTR(<str>, <substr>)
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | 検索対象となるメイン文字列。型: VARCHAR |
<substr> | 検索する部分文字列。型: VARCHAR |
戻り値
INT型を返し、メイン文字列内での部分文字列の最初の出現位置を表します。
検索ルール:
- 位置インデックスは1から開始します(0からではありません)
- 部分文字列が存在しない場合は0を返します
- 検索は大文字小文字を区別します
- UTF-8マルチバイト文字の正確な位置計算をサポートします
- 空文字列の特別な処理を行います
特殊なケース:
- いずれかのパラメータがNULLの場合、NULLを返します
- 部分文字列が空文字列の場合、1を返します(空文字列は任意の位置に「存在」します)
- メイン文字列が空で部分文字列が空でない場合、0を返します
- 特殊文字や記号を含む部分文字列の検索をサポートします
例
- 基本的な文字検索
SELECT INSTR('abc', 'b'), INSTR('abc', 'd');
+-------------------+-------------------+
| INSTR('abc', 'b') | INSTR('abc', 'd') |
+-------------------+-------------------+
| 2 | 0 |
+-------------------+-------------------+
- 部分文字列検索
SELECT INSTR('hello world', 'world'), INSTR('hello world', 'WORLD');
+------------------------------+------------------------------+
| INSTR('hello world', 'world') | INSTR('hello world', 'WORLD') |
+------------------------------+------------------------------+
| 7 | 0 |
+------------------------------+------------------------------+
- NULL値の処理
SELECT INSTR(NULL, 'test'), INSTR('test', NULL);
+---------------------+---------------------+
| INSTR(NULL, 'test') | INSTR('test', NULL) |
+---------------------+---------------------+
| NULL | NULL |
+---------------------+---------------------+
- 空文字列の処理
SELECT INSTR('hello', ''), INSTR('', 'world');
+--------------------+---------------------+
| INSTR('hello', '') | INSTR('', 'world') |
+--------------------+---------------------+
| 1 | 0 |
+--------------------+---------------------+