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

GILT FÜR: jaSQL Server jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Mit dieser Funktion können Sie in einem Zeichenausdruck nach einem anderen Zeichenausdruck suchen. Bei erfolgreicher Suche wird die Startposition des gesuchten Ausdrucks zurückgegeben.This function searches for one character expression inside a second character expression, returning the starting position of the first expression if found.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )   

ArgumenteArguments

expressionToFindexpressionToFind
Ein Zeichenausdruck (Expressions (Ausdrücke)), der die zu suchende Sequenz enthält.A character expression containing the sequence to find. Die maximale Zeichenlänge von expressionToFind beträgt 8000 Zeichen.expressionToFind has an 8000 character limit.

expressionToSearchexpressionToSearch
Der zu suchende Zeichenausdruck.A character expression to search.

start_locationstart_location
Ein integer- oder bigint-Ausdruck, bei dem die Suche beginnt.An integer or bigint expression at which the search starts. Wenn start_location nicht angegeben ist, einen negativen Wert oder den Wert 0 (null) besitzt, wird mit der Suche am Anfang von expressionToSearch begonnen.If start_location is not specified, has a negative value, or has a zero (0) value, the search starts at the beginning of expressionToSearch.

RückgabetypenReturn types

bigint, wenn expressionToSearch vom Datentyp nvarchar(max), varbinary(max) oder varchar(max) ist; andernfalls int.bigint if expressionToSearch has an nvarchar(max), varbinary(max), or varchar(max) data type; int otherwise.

RemarksRemarks

Wenn entweder der Ausdruck expressionToFind oder der Ausdruck expressionToSearch einen Unicode-Datentyp aufweist (nchar oder nvarchar), und der andere Ausdruck nicht, konvertiert die CHARINDEX-Funktion diesen anderen Ausdruck in einen Unicode-Datentyp.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 kann nicht mit den Datentypen image, ntext oder text verwendet werden.CHARINDEX cannot be used with image, ntext, or text data types.

Wenn entweder der Ausdruck expressionToFind oder der Ausdruck expressionToSearch einen NULL-Wert aufweist, gibt auch CHARINDEX NULL zurück.If either the expressionToFind or expressionToSearch expression has a NULL value, CHARINDEX returns NULL.

Wenn expressionToFind innerhalb von expressionToSearch von CHARINDEX nicht gefunden werden kann, gibt CHARINDEX 0 (null) zurück.If CHARINDEX does not find expressionToFind within expressionToSearch, CHARINDEX returns 0.

CHARINDEX führt Vergleiche basierend auf der Sortierung der Eingabe aus.CHARINDEX performs comparisons based on the input collation. Verwenden Sie zum Ausführen eines Vergleichs in einer angegebenen Sortierung COLLATE, um eine ausdrückliche Sortierung auf die Eingabe anzuwenden.To perform a comparison in a specified collation, use COLLATE to apply an explicit collation to the input.

Die zurückgegebene Startposition ist 1-basiert, nicht 0-basiert.The starting position returned is 1-based, not 0-based.

0x0000 (char(0)) ist ein nicht definiertes Zeichen in Windows-Sortierungen und kann nicht in CHARINDEX enthalten sein.0x0000 (char(0)) is an undefined character in Windows collations and cannot be included in CHARINDEX.

Ergänzende Zeichen (Ersatzpaare)Supplementary Characters (Surrogate Pairs)

Bei Verwendung von SC-Sortierungen werden Ersatzzeichenpaare sowohl von start_location als auch vom Rückgabewert als ein anstelle von zwei Zeichen gezählt.When using SC collations, both start_location and the return value count surrogate pairs as one character, not two. Weitere Informationen finden Sie unter Collation and Unicode Support.For more information, see Collation and Unicode Support.

BeispieleExamples

A.A. Zurückgeben der Startposition eines AusdrucksReturning the starting position of an expression

In diesem Beispiel wird in der Variablen des gesuchten Zeichenfolgenwerts @document nach bicycle gesucht.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  

Im Folgenden finden Sie das Resultset.Here is the result set.

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

B.B. Suchen ab einer bestimmten PositionSearching from a specific position

In diesem Beispiel wird der optionale start_location-Parameter verwendet, um die Suche nach vital beim fünften Zeichen der Variable des gesuchten Zeichenfolgenwerts @document zu beginnen.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  

Im Folgenden finden Sie das Resultset.Here is the result set.

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

C.C. Suchen nach einem nicht vorhandenen AusdruckSearching for a nonexistent expression

In diesem Beispiel wird das Resultset dargestellt, wenn expressionToFind von CHARINDEX nicht in expressionToSearch gefunden werden kann.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  

Im Folgenden finden Sie das Resultset.Here is the result set.

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

In diesem Beispiel wird eine Suche nach der Zeichenfolge 'TEST' in der gesuchten Zeichenfolge 'This is a Test``' dargestellt, wobei die Groß-/Kleinschreibung berücksichtigt wird.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);  

Im Folgenden finden Sie das Resultset.Here is the result set.

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

In diesem Beispiel wird eine Suche nach der Zeichenfolge 'Test' in 'This is a Test' dargestellt, wobei die Groß-/Kleinschreibung berücksichtigt wird.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);  

Im Folgenden finden Sie das Resultset.Here is the result set.

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

In diesem Beispiel wird eine Suche nach der Zeichenfolge 'TEST' in 'This is a Test' dargestellt, wobei die Groß-/Kleinschreibung nicht berücksichtigt wird.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  

Im Folgenden finden Sie das Resultset.Here is the result set.

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

Beispiele: Azure SQL Data WarehouseAzure SQL Data Warehouse und Parallel Data WarehouseParallel Data Warehouse.Examples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

F.F. Suche ab dem Beginn eines ZeichenfolgenausdrucksSearching from the start of a string expression

Dieses Beispiel gibt den ersten Speicherort der Zeichenfolge is in der Zeichenfolge This is a string ab Position 1 (also ab dem ersten Zeichen) von This is a string zurück.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');  

Im Folgenden finden Sie das Resultset.Here is the result set.

---------
3

G.G. Suchen ab einer anderen Position als der erstenSearching from a position other than the first position

Dieses Beispiel gibt den ersten Speicherort der Zeichenfolge is in der Zeichenfolge This is a string ab Position 4 (also ab dem vierten Zeichen) zurück.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);  

Im Folgenden finden Sie das Resultset.Here is the result set.

---------
 6

H.H. Ergebnisse, wenn die Zeichenfolge nicht gefunden wirdResults when the string is not found

Dieses Beispiel zeigt den Rückgabewert, wenn die Zeichenfolge string_pattern von CHARINDEX nicht in der gesuchten Zeichenfolge gefunden wird.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;  

Im Folgenden finden Sie das Resultset.Here is the result set.

---------
0

Siehe auchSee also

LEN (Transact-SQL)LEN (Transact-SQL)
PATINDEX (Transact-SQL)PATINDEX (Transact-SQL)
String Functions (Transact-SQL) (Zeichenfolgenfunktionen (Transact-SQL))String Functions (Transact-SQL)
+ (Verketten von Zeichenfolgen) (Transact-SQL)+ (String Concatenation) (Transact-SQL)
Collation and Unicode SupportCollation and Unicode Support