CHARINDEX (Transact-SQL)CHARINDEX (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

この関数は、2 番目の文字式内の 1 つの文字式を検索して、見つかった場合には最初の式の開始位置を返します。This function searches for one character expression inside a second character expression, returning the starting position of the first expression if found.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )   

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

expressionToFindexpressionToFind
検索するシーケンスを含む文字A character expression containing the sequence to find. expressionToFind には 8000 文字の制限があります。expressionToFind has an 8000 character limit.

expressionToSearchexpressionToSearch
検索する文字式。A character expression to search.

start_locationstart_location
検索が開始される integer 型または bigint 型の式。An integer or bigint expression at which the search starts. start_location を指定しない場合、または負の値や 0 を指定した場合は、expressionToSearch の先頭から検索が開始されます。If start_location is not specified, has a negative value, or has a zero (0) value, the search starts at the beginning of expressionToSearch.

戻り値の型Return types

expressionToSearchvarchar(max)nvarchar(max) 、または varbinary(max) データ型の場合は bigint、それ以外の場合は intbigint if expressionToSearch has an nvarchar(max), varbinary(max), or varchar(max) data type; int otherwise.

解説Remarks

expressionToFind または expressionToSearch のいずれかの式が Unicode データ型 (nchar または nvarchar) の場合で、他の式がそうでない場合、CHARINDEX 関数はその他の式を Unicode データ型に変換します。If either the expressionToFind or expressionToSearch expression has a Unicode data type (nchar or nvarchar), and the other expression does not, the CHARINDEX function converts that other expression to a Unicode data type. CHARINDEX は、imagentext、または text データ型では使用できません。CHARINDEX cannot be used with image, ntext, or text data types.

expressionToFind 式または expressionToSearch のいずれかに NULL 値がある場合、CHARINDEX は NULL を返します。If either the expressionToFind or expressionToSearch expression has a NULL value, CHARINDEX returns NULL.

CHARINDEX によって expressionToSearch 内で expressionToFind が見つからない場合、CHARINDEX は 0 を返します。If CHARINDEX does not find expressionToFind within expressionToSearch, CHARINDEX returns 0.

CHARINDEX は、入力の照合順序に基づいて比較を行います。CHARINDEX performs comparisons based on the input collation. 特定の照合順序で比較を行うには、COLLATE を使用して、入力に明示的な照合順序を適用します。To perform a comparison in a specified collation, use COLLATE to apply an explicit collation to the input.

開始位置は 0 ではなく 1 を基準とします。The starting position returned is 1-based, not 0-based.

0x0000 (char(0) ) は Windows 照合順序で未定義の文字であり、CHARINDEX に含めることはできません。0x0000 (char(0)) is an undefined character in Windows collations and cannot be included in CHARINDEX.

補助文字 (サロゲート ペア)Supplementary Characters (Surrogate Pairs)

SC の照合順序を使用する場合、start_location と戻り値では、サロゲート ペアが 2 文字ではなく 1 文字としてカウントされます。When using SC collations, both start_location and the return value count surrogate pairs as one character, not two. 詳細については、「 Collation and Unicode Support」を参照してください。For more information, see Collation and Unicode Support.

Examples

A.A. 式の開始位置を返すReturning the starting position of an expression

この例では、検索された文字列値の変数 @documentbicycle を検索します。This example searches for bicycle in the searched string value variable @document.

DECLARE @document VARCHAR(64);  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('bicycle', @document);  
GO  

結果セットは次のようになります。Here is the result set.

-----------   
48            

B.B. 特定の位置から検索するSearching from a specific position

この例では、オプションの start_location パラメーターを使用して、検索された文字列値の変数 @document の 5 文字目で vital の検索を開始します。This example uses the optional start_location parameter to start the search for vital at the fifth character of the searched string value variable @document.

DECLARE @document VARCHAR(64);  
  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('vital', @document, 5);  
GO  

結果セットは次のようになります。Here is the result set.

-----------   
16            
  
(1 row(s) affected)  

C.C. 存在しない式を検索するSearching for a nonexistent expression

この例では、CHARINDEX が expressionToSearchexpressionToFind を検出できない場合の結果セットを示します。This example shows the result set when CHARINDEX does not find expressionToFind within expressionToSearch.

DECLARE @document VARCHAR(64);  
  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('bike', @document);  
GO  

結果セットは次のようになります。Here is the result set.

-----------
0
  
(1 row(s) affected)

この例では、大文字と小文字を区別して、検索された文字列 'This is a Test``' に含まれる文字列 'TEST' を検索します。This example shows a case-sensitive search for the string 'TEST' in searched string 'This is a Test``'.

USE tempdb;  
GO  
--perform a case sensitive search  
SELECT CHARINDEX ( 'TEST',  
       'This is a Test'  
       COLLATE Latin1_General_CS_AS);  

結果セットは次のようになります。Here is the result set.

-----------
0

この例では、大文字と小文字を区別して、'This is a Test' に含まれる文字列 'Test' を検索します。This example shows a case-sensitive search for the string 'Test' in 'This is a Test'.

  
USE tempdb;  
GO  
SELECT CHARINDEX ( 'Test',  
       'This is a Test'  
       COLLATE Latin1_General_CS_AS);  

結果セットは次のようになります。Here is the result set.

-----------
11

この例では、大文字と小文字を区別せずに、'This is a Test' に含まれる文字列 'TEST' を検索します。This example shows a case-insensitive search for the string 'TEST' in 'This is a Test'.

USE tempdb;  
GO  
SELECT CHARINDEX ( 'TEST',  
       'This is a Test'  
       COLLATE Latin1_General_CI_AS);  
GO  

結果セットは次のようになります。Here is the result set.

-----------
11

例: Azure Synapse AnalyticsAzure Synapse AnalyticsParallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse AnalyticsAzure Synapse Analytics and Parallel Data WarehouseParallel Data Warehouse

F.F. 文字列式の先頭から検索するSearching from the start of a string expression

この例では、This is a string の位置 1 (最初の文字) から開始して、文字列 This is a string に含まれる文字列 is の最初の位置を返します。This example returns the first location of the string is in string This is a string, starting from position 1 (the first character) of This is a string.

SELECT CHARINDEX('is', 'This is a string');  

結果セットは次のようになります。Here is the result set.

---------
3

G.G. 最初の位置以外の位置から検索するSearching from a position other than the first position

この例では、位置 4 (4 番目の文字) から開始して、文字列 This is a string に含まれる文字列 is の最初の位置を返します。This example returns the first location of the string is in string This is a string, starting the search from position 4 (the fourth character).

SELECT CHARINDEX('is', 'This is a string', 4);  

結果セットは次のようになります。Here is the result set.

---------
 6

H.H. 文字列が見つからない場合の結果Results when the string is not found

この例では、CHARINDEX で文字列 string_pattern が検索文字列に見つからない場合の戻り値を示します。This example shows the return value when CHARINDEX does not find string string_pattern in the searched string.

SELECT TOP(1) CHARINDEX('at', 'This is a string') FROM dbo.DimCustomer;  

結果セットは次のようになります。Here is the result set.

---------
0

関連項目See also

LEN (Transact-SQL)LEN (Transact-SQL)
PATINDEX (Transact-SQL)PATINDEX (Transact-SQL)
文字列関数 (Transact-SQL)String Functions (Transact-SQL)
+ (文字列連結) (Transact-SQL)+ (String Concatenation) (Transact-SQL)
照合順序と Unicode のサポートCollation and Unicode Support