Freigeben über


CHARINDEX (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

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.

Transact-SQL-Syntaxkonventionen

Syntax

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Argumente

expressionToFind

Ein Zeichenausdruck (Expressions (Ausdrücke)), der die zu suchende Sequenz enthält. expressionToFind hat eine Beschränkung von 8.000 Zeichen.

expressionToSearch

Der zu suchende Zeichenausdruck.

start_location

Ein integer- oder bigint-Ausdruck, bei dem die Suche beginnt. Wenn start_location nicht angegeben ist, einen negativen Wert hat oder einen Nullwert (0) aufweist, beginnt die Suche am Anfang von expressionToSearch.

Rückgabetypen

bigint, wenn expressionToSearch vom Datentyp nvarchar(max) , varbinary(max) oder varchar(max) ist; andernfalls int.

Bemerkungen

Wenn der Ausdruck "ExpressionToFind " oder " expressionToSearch " einen Unicode-Datentyp (nchar oder nvarchar) aufweist und der andere Ausdruck nicht, konvertiert die CHARINDEX Funktion diesen anderen Ausdruck in einen Unicode-Datentyp. CHARINDEX kann nicht mit Bild-, ntext- oder Textdatentypen verwendet werden.

Wenn der Ausdruck "ToFind " oder " expressionToSearch " einen NULL Wert aufweist, CHARINDEX wird ein Wert zurückgegeben NULL.

Wenn CHARINDEXexpressionToFind in expressionToSearch nicht gefunden wird, CHARINDEX wird zurückgegeben 0.

CHARINDEX Führt Vergleiche basierend auf der Eingabesortierung aus. Verwenden Sie COLLATE zum Ausführen eines Vergleichs in einer angegebenen Sortierung eine explizite Sortierung auf die Eingabe.

Die zurückgegebene Startposition ist 1-basiert, nicht 0-basiert.

0x0000 (char(0)) ist ein nicht definiertes Zeichen in Windows-Sortierungen und kann nicht eingeschlossen CHARINDEXwerden.

Ergänzende Zeichen (Ersatzpaare)

Bei Verwendung von Zusatzzeichen(SC)-Sortierungen werden sowohl start_location als auch die Rückgabewert-Ersatzpaare als ein Zeichen und nicht als zwei Zeichen gezählt. Weitere Informationen finden Sie unter Sortierung und Unicode-Unterstützung.

Beispiele

A. Zurückgeben der Anfangsposition eines Ausdrucks

In diesem Beispiel wird in der Variablen des gesuchten Zeichenfolgenwerts bicycle nach @document gesucht.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bicycle', @document);
GO

Hier sehen Sie das Ergebnis.

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

B. Suche aus einer bestimmten 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.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('vital', @document, 5);
GO

Hier sehen Sie das Ergebnis.

-----------
16

C. Suchen nach einem nicht vorhandenen Ausdruck

Dieses Beispiel zeigt das Resultset, wenn CHARINDEX"expressionToFind " in expressionToSearch nicht gefunden wird.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bike', @document);
GO

Hier sehen Sie das Ergebnis.

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

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.

USE tempdb;
GO

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

Hier sehen Sie das Ergebnis.

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

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.

USE tempdb;
GO

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

Hier sehen Sie das Ergebnis.

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

Dieses Beispiel zeigt eine groß- und kleinschreibungsunsensitive Suche nach der Zeichenkette TEST in der gesuchten Zeichenfolge This is a Test.

USE tempdb;
GO

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

Hier sehen Sie das Ergebnis.

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

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

F. Suchen vom Anfang eines Zeichenfolgenausdrucks

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.

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

Hier sehen Sie das Ergebnis.

---------
3

G. Suche von einer anderen Position als der ersten 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.

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

Hier sehen Sie das Ergebnis.

---------
 6

H. Ergebnisse, wenn die Zeichenfolge nicht gefunden wird

In diesem Beispiel wird der Rückgabewert veranschaulicht, wenn CHARINDEX in der durchsuchten Zeichenfolge keine Zeichenfolge string_pattern gefunden wird.

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

Hier sehen Sie das Ergebnis.

---------
0