Share via


CHARINDEX (Transact-SQL)

Sucht in einem Ausdruck nach einem anderen Ausdruck und gibt dessen Startposition zurück, falls gefunden.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )

Argumente

  • expressionToFind
    Ein Zeichenausdruck, der die zu suchende Sequenz enthält. expressionToFind ist auf 8000 Zeichen beschränkt.

  • expressionToSearch
    Der zu suchende Zeichenausdruck.

  • start_location
    Ist eine integer 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 expressionToSearch begonnen.

Rückgabetypen

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

Hinweise

Wenn entweder expressionToFind oder expressionToSearch 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 den Datentypen text, ntext und image verwendet werden.

Wenn entweder expressionToFind oder expressionToSearch NULL ist, gibt CHARINDEX NULL zurück.

Wenn expressionToFind in expressionToSearch 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 kann nicht in CHARINDEX enthalten sein.

Ergänzende Zeichen (Ersatzpaare)

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

Beispiele

A.Zurückgeben der Startposition eines Ausdrucks

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

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

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

Dies ist das Resultset.

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

B.Suchen ab einer bestimmten Position

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.

USE AdventureWorks2012;
GO
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)

C.Suchen nach einem nicht vorhandenen Ausdruck

Im folgenden Beispiel wird das Resultset dargestellt, wenn expressionToFind in expressionToSearch nicht gefunden wird.

USE AdventureWorks2012;
GO
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)

D.Ausführen einer Suche unter Beachtung der Groß-/Kleinschreibung

Im folgenden Beispiel wird eine Suche nach der Zeichenfolge 'TEST' in 'Das ist 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 ist 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

E.Ausführen einer Suche ohne Beachtung der Groß-/Kleinschreibung

Im folgenden Beispiel wird eine Suche nach der Zeichenfolge 'TEST' in 'Das ist 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

Siehe auch

Verweis

Zeichenfolgenfunktionen (Transact-SQL)

+ (Verketten von Zeichenfolgen) (Transact-SQL)

Konzepte

Sortierung und Unicode-Unterstützung