- カテゴリ:
文字列とバイナリ関数 (マッチング/比較)
CHARINDEX¶
2番目の引数で最初の引数が最初に出現する場所を検索し、成功した場合は、2番目の引数で最初の引数の位置(1ベース)を返します。
- エイリアス
構文¶
CHARINDEX( <expr1>, <expr2> [ , <start_pos> ] )
引数¶
必須:
式1
探している値を表す文字列またはバイナリ式です。
式2
検索する値を表す文字列またはバイナリ式です。
オプション:
開始位置
検索を開始する位置を示す番号です(
1
は式2
の開始を表します)。デフォルト:
1
使用上の注意¶
引数が NULLの場合、 NULLを返します。
文字列またはバイナリ値が見つからない場合、
0
を返します。指定されたオプションの
開始位置
が2番目の引数(検索対象の文字列)の末尾を超えている場合、0
を返します。最初の引数が空の場合(空の文字列など)、
1
を返します。最初の2つの引数のデータ型は同じである必要があります。両方とも文字列にするか、両方ともバイナリ値にする必要があります。
例¶
「fuzzy wuzzy」で「uzzy」の最初の出現を見つけます。
SELECT CHARINDEX('uzzy', 'fuzzy wuzzy', 1); +-------------------------------------+ | CHARINDEX('UZZY', 'FUZZY WUZZY', 1) | |-------------------------------------| | 2 | +-------------------------------------+
前と同じ例ですが、位置5から開始するため、最初ではなく2番目の出現が見つかります。
SELECT CHARINDEX('uzzy', 'fuzzy wuzzy', 5); +-------------------------------------+ | CHARINDEX('UZZY', 'FUZZY WUZZY', 5) | |-------------------------------------| | 8 | +-------------------------------------+
文字列でUnicode文字を含むさまざまな文字を検索します。
SELECT n, h, CHARINDEX(n, h) FROM pos; +--------+---------------------+-------------------+ | N | H | CHARINDEX(N IN H) | |--------+---------------------+-------------------| | | | 1 | | | sth | 1 | | 43 | 41424344 | 5 | | a | NULL | NULL | | dog | catalog | 0 | | log | catalog | 5 | | lésine | le péché, la lésine | 14 | | nicht | Ich weiß nicht | 10 | | sth | | 0 | | ☃c | ☃a☃b☃c☃d | 5 | | ☃☃ | bunch of ☃☃☃☃ | 10 | | ❄c | ❄a☃c❄c☃ | 5 | | NULL | a | NULL | | NULL | NULL | NULL | +--------+---------------------+-------------------+
バイナリ値のバイトを検索します。以下の値は16進表記であるため、単一の BINARY バイトは2桁の16進数として表されます。
この例では、「EF」が3番目のバイトと一致するため、戻り値は3です(最初のバイトは「AB」、2番目のバイトは「CD」、3番目のバイトは「EF」)。
SELECT CHARINDEX(X'EF', X'ABCDEF'); +-------------------------------+ | CHARINDEX(X'EF' IN X'ABCDEF') | |-------------------------------| | 3 | +-------------------------------+この例では、一致するものはありません。シーケンス「BC」は検索対象の値に含まれているように見えますが、「B」は最初のバイトの2番目のニブルであり、「C」は2番目のバイトの最初のニブルです。実際に「BC」を含むバイトはないため、戻り値は0(見つからない)です。
SELECT CHARINDEX(X'BC', X'ABCD'); +-----------------------------+ | CHARINDEX(X'BC' IN X'ABCD') | |-----------------------------+ | 0 | +-----------------------------+