Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-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
D: Durchführen einer Suche unter Beachtung der Groß-/Kleinschreibung
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
E. Durchführen einer Suche ohne Groß-/Kleinschreibung
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