メインコンテンツまでスキップ
バージョン: 26.x

INSTR

説明

INSTR関数は、メイン文字列内で部分文字列が最初に出現する位置を返します。位置のカウントは1から始まります。これは完全一致をサポートし、大文字と小文字を区別する、一般的に使用される文字列検索関数です。この関数は、テキスト処理、データクリーニング、文字列解析で広く使用されています。

構文

INSTR(<str>, <substr>)

パラメータ

パラメータ説明
<str>検索対象となるメイン文字列。型: VARCHAR
<substr>検索する部分文字列。型: VARCHAR

戻り値

INT型を返し、メイン文字列内での部分文字列の最初の出現位置を表します。

検索ルール:

  • 位置インデックスは1から開始します(0からではありません)
  • 部分文字列が存在しない場合は0を返します
  • 検索は大文字小文字を区別します
  • UTF-8マルチバイト文字の正確な位置計算をサポートします
  • 空文字列の特別な処理を行います

特殊なケース:

  • いずれかのパラメータがNULLの場合、NULLを返します
  • 部分文字列が空文字列の場合、1を返します(空文字列は任意の位置に「存在」します)
  • メイン文字列が空で部分文字列が空でない場合、0を返します
  • 特殊文字や記号を含む部分文字列の検索をサポートします

  1. 基本的な文字検索
SELECT INSTR('abc', 'b'), INSTR('abc', 'd');
+-------------------+-------------------+
| INSTR('abc', 'b') | INSTR('abc', 'd') |
+-------------------+-------------------+
| 2 | 0 |
+-------------------+-------------------+
  1. 部分文字列検索
SELECT INSTR('hello world', 'world'), INSTR('hello world', 'WORLD');
+------------------------------+------------------------------+
| INSTR('hello world', 'world') | INSTR('hello world', 'WORLD') |
+------------------------------+------------------------------+
| 7 | 0 |
+------------------------------+------------------------------+
  1. NULL値の処理
SELECT INSTR(NULL, 'test'), INSTR('test', NULL);
+---------------------+---------------------+
| INSTR(NULL, 'test') | INSTR('test', NULL) |
+---------------------+---------------------+
| NULL | NULL |
+---------------------+---------------------+
  1. 空文字列の処理
SELECT INSTR('hello', ''), INSTR('', 'world');
+--------------------+---------------------+
| INSTR('hello', '') | INSTR('', 'world') |
+--------------------+---------------------+
| 1 | 0 |
+--------------------+---------------------+