SQL道場 文字列関数 CHARINDEX関数

SQLで文字列内に含まれる文字列を検索するCHARINDEX関数について記載しています。

対応データベースSQLServer

CHARINDEX関数の文法

SELECT CHARINDEX(検索する文字列,検索対象の文字列,検索開始位置) FROM テーブル
引数検索する文字列文字列型 ※8000 文字の制限があります。
検索対象の文字列文字列型
検索開始位置数値型
返値数値型 検索する文字列が見つかった場合はその位置が、見つからなかった場合は0が戻ります。
検索する文字列がvarchar(max) 、nvarchar(max) 、または varbinary(max) データ型の場合は bigint、それ以外の場合は int。

CHARINDEX関数は検索対象の文字列内に含まれる文字列を検索します。文字列検索の開始位置を指定した場合は、その位置から検索し、省略した場合は先頭から検索します。

マイクロソフト公式

実行例

SQLServerの実行例

文字列の先頭から検索

/* SQL Server 検索対象の文字列を検索し該当した文字列の位置を返すサンプル */
SELECT STR,CHARINDEX('計画',STR) FROM [testdb].[dbo].[WORK];
CHARINDEX関数サンプル実行結果

最初の位置以外の位置から検索

/* SQL Server 最初の位置以外から検索するサンプル */
SELECT CHARINDEX('BC','Abcdefgbc',4) ;
CHARINDEX関数サンプル実行結果

大文字小文字を区別する検索

/* SQL Server 大文字小文字を区別する検索を実行するサンプル */
SELECT CHARINDEX('BC','Abcdefg' COLLATE Latin1_General_CS_AS) ;
CHARINDEX関数サンプル実行結果

大文字小文字を区別しない検索

/* SQL Server 大文字小文字を区別しない検索を実行するサンプル */
SELECT CHARINDEX('BC','Abcdefg' COLLATE Latin1_General_CI_AS) ;
CHARINDEX関数サンプル実行結果