Freigeben über


CHARINDEX (Transact-SQL)

Durchsucht expression2 nach expression1 und gibt seine Anfangsposition zurück, falls sie gefunden wird. Die Suche beginnt bei start_location.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 

Argumente

  • expression1
    Ist ein Zeichenausdruck, der die zu suchende Sequenz enthält. expression1 ist auf 8000 Zeichen beschränkt.

  • expression2
    Der zu suchende Zeichenausdruck.

  • start_location
    Ist eine ganze Zahl oder ein bigint-Ausdruck, bei dem die Suche beginnt. Wenn start_location nicht angegeben wird, eine negative Zahl oder 0 ist, wird die Suche am Anfang von expression2 begonnen.

Rückgabetypen

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

Hinweise

Wenn entweder expression1 oder expression2 einen Unicode-Datentyp (nvarchar oder nchar) aufweist, der andere Ausdruck jedoch nicht, wird der andere Ausdruck in einen Unicode-Datentyp konvertiert. CHARINDEX kann nicht mit dem image-Datentyp verwendet werden.

Wenn entweder expression1 oder expression2 NULL ist, gibt CHARINDEX den Wert NULL zurück, wenn der Kompatibilitätsgrad der Datenbank 70 oder höher ist. Wenn der Kompatibilitätsgrad der Datenbank 65 oder niedriger ist, gibt CHARINDEX nur dann NULL zurück, wenn sowohl expression1 als auch expression2 NULL sind.

Wenn expression1 in expression2 nicht gefunden wird, gibt CHARINDEX 0 zurück.

CHARINDEX führt Vergleiche basierend auf der Sortierung der Eingabe aus. Zum Ausführen eines Vergleichs in einer angegebenen Sortierung können Sie mithilfe von COLLATE eine ausdrückliche Sortierung auf die Eingabe anwenden.

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

0x0000 (char(0)) ist ein nicht definiertes Zeichen in Windows-Sortierungen und darf nicht in CHARINDEX eingeschlossen werden.

Beispiele

Im folgenden Beispiel wird die Position zurückgegeben, an der die Zeichenfolge bicycle in der DocumentSummary-Spalte der Document-Tabelle beginnt.

DECLARE @document varchar(64)

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

Dies ist das Resultset.

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

Im folgenden Beispiel wird der optionale start_location-Parameter verwendet, um die Suche nach vital beim fünften Zeichen in der DocumentSummary-Spalte zu beginnen.

DECLARE @document varchar(64)

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

Dies ist das Resultset.

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

(1 row(s) affected)

Im folgenden Beispiel wird das Resultset dargestellt, wenn expression1 in expression2 nicht gefunden wird.

DECLARE @document varchar(64)

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

Dies ist das Resultset.

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

(1 row(s) affected)

Im folgenden Beispiel wird eine Suche nach der Zeichenfolge 'TEST' in 'Das jst ein Test' ausgeführt, wobei Groß-/Kleinschreibung berücksichtigt wird.

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

Dies ist das Resultset.

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

Im folgenden Beispiel wird eine Suche nach der Zeichenfolge 'Test' in 'Das jst ein Test' ausgeführt, wobei Groß-/Kleinschreibung berücksichtigt wird.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS)

Dies ist das Resultset.

----------- 
13          

Im folgenden Beispiel wird eine Suche nach der Zeichenfolge 'TEST' in 'Das jst ein Test' ausgeführt, wobei Groß-/Kleinschreibung nicht berücksichtigt wird.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CI_AS)
GO

Dies ist das Resultset.

----------- 
13