Sdílet prostřednictvím


CHARINDEX (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Tato funkce vyhledá jeden znakový výraz uvnitř druhého znakového výrazu a vrátí počáteční pozici prvního výrazu, pokud se najde.

Transact-SQL konvence syntaxe

Syntaxe

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Arguments

expressionToFind

Výraz znaku obsahující sekvenci, která se má najít. výrazToFind má limit 8 000 znaků.

expressionToSearch

Výraz znaku, který se má prohledávat.

start_location

Celé číslo nebo výraz bigint, na kterém hledání začíná. Pokud start_location není zadán, má zápornou hodnotu nebo má nulovou hodnotu0, hledání začíná na začátku výrazuToSearch.

Návratové typy

bigint if expressionToSearchdatový typ nvarchar(max), varbinary(max) nebo varchar(max).jinak .

Poznámky

Pokud výraz ExpressionToFind nebo expressionToSearch má datový typ Unicode (nchar nebo nvarchar) a druhý výraz ne, CHARINDEX funkce převede tento druhý výraz na datový typ Unicode. CHARINDEX nelze použít s obrázky, ntextem nebo textovými datovými typy.

Pokud výrazToFind nebo expressionToSearch výraz má NULL hodnotu, CHARINDEX vrátí hodnotu NULL.

Pokud CHARINDEXvýrazToFind v rámci expressionToSearch nenajde, CHARINDEX vrátí hodnotu 0.

CHARINDEX provádí porovnání na základě vstupní kolace. Chcete-li provést porovnání v zadané kolaci, použijte COLLATE k použití explicitní kolace na vstup.

Vrácená počáteční pozice je založená na 1, nikoli na 0.

0x0000 (char(0)) je nedefinovaný znak v kolacích Systému Windows a nelze jej zahrnout do CHARINDEX.

Doplňkové znaky (náhradní dvojice)

Při použití kolace doplňkových znaků (SC) start_location i návratové dvojice náhradních hodnot jako jeden znak, nikoli dva. Další informace najdete v tématu Podpora kolace a Kódování Unicode.

Examples

A. Vrátí počáteční pozici výrazu.

Tento příklad vyhledá bicycle v proměnné @documenthodnoty hledaného řetězce .

DECLARE @document AS VARCHAR (64);

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

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

Tady je sada výsledků.

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

B. Hledání z konkrétní pozice

V tomto příkladu se používá volitelný parametr start_location ke spuštění hledání na vital pátém znaku proměnné prohledané řetězcové hodnoty @document.

DECLARE @document AS VARCHAR (64);

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

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

Tady je sada výsledků.

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

C. Vyhledání neexistující výrazu

Tento příklad ukazuje sadu výsledků, pokud CHARINDEX nenajde výrazToFind v rámci expressionToSearch.

DECLARE @document AS VARCHAR (64);

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

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

Tady je sada výsledků.

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

Tento příklad ukazuje hledání řetězce TEST v řetězci This is a Tests rozlišováním velkých a malých písmen .

USE tempdb;
GO

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

Tady je sada výsledků.

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

Tento příklad ukazuje hledání řetězce Test v řetězci This is a Tests rozlišováním velkých a malých písmen .

USE tempdb;
GO

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

Tady je sada výsledků.

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

Tento příklad ukazuje hledání řetězce TEST ve hledaném řetězci This is a Testbez rozlišování malých a velkých písmen .

USE tempdb;
GO

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

Tady je sada výsledků.

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

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

F. Hledání od začátku řetězcového výrazu

Tento příklad vrátí první umístění řetězce v řetězci isThis is a string, počínaje pozicí 1 (první znak) z This is a string.

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

Tady je sada výsledků.

---------
3

G. Hledání z jiné pozice než první pozice

Tento příklad vrátí první umístění řetězce is v řetězci This is a string, počínaje hledáním od pozice 4 (čtvrtý znak).

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

Tady je sada výsledků.

---------
 6

H. Výsledky, když se řetězec nenajde

Tento příklad ukazuje návratovou hodnotu, pokud CHARINDEX ve hledaném řetězci nenajdete řetězec string_pattern .

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

Tady je sada výsledků.

---------
0