Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databá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.
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 expressionToSearch má datový 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
D. Provedení hledání s rozlišováním velkých a malých písmen
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
E. Vyhledávání bez rozlišování velkých a malých písmen
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