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
Vrátí počáteční pozici prvního výskytu vzoru v zadaném výrazu nebo nulu, pokud se vzor nenajde, u všech platných textových a znakových datových typů.
Syntax
PATINDEX ( '%pattern%' , expression )
Arguments
pattern
Znakový výraz, který obsahuje sekvenci, která se má najít. Lze použít žolíkové znaky; nicméně % postava musí být před a následovat vzor (kromě hledání prvního nebo posledního znaku). pattern je výraz kategorie datového typu znakového řetězce. Pattern je omezen na 8 000 znaků.
Note
Tradiční regulární výrazy nejsou nativně podporovány v SQL Serveru 2022 (16.x) a starších verzích, ale podobné komplexní porovnávání vzorů lze dosáhnout pomocí různých výrazů se zástupnými znaky. Pro podrobnější informace o syntaxi divokých znaků viz dokumentace operátorů řetězců . Pro informace o regulárních výrazových funkcích v SQL Server 2025 (17.x) viz Regulární výrazy funkce.
expression
Výraz, obvykle sloupec, který se hledá pro zadaný vzor. výraz je kategorie datového typu znakového řetězce.
Návratové typy
bigint , pokud je výraz pro datové typy varchar(max) nebo nvarchar(max ); jinak int.
Remarks
Pokud je vzor , NULLPATINDEX vrací NULL.
Pokud je NULLvýraz , PATINDEX vrátí chybu.
Počáteční pozice je PATINDEX1.
PATINDEX provádí porovnání na základě kolace vstupu. Chcete-li provést porovnání v zadané kolaci, můžete použít COLLATE explicitní kolaci na vstup.
Doplňkové znaky (náhradní dvojice)
Když použijete kolace s doplňkovými znaky (SC), hodnota return počítá všechny UTF-16 náhradní páry v parametru výrazu jako jeden znak. Další informace najdete v tématu podpora kolace a kódování Unicode.
0x0000 (char(0)) je nedefinovaný znak v kolacích Systému Windows a nelze jej zahrnout do PATINDEX.
Examples
A. Základní příklad PATINDEX
Následující příklad zkontroluje krátký znak řetězec (interesting data) pro počáteční umístění znaků ter.
SELECT PATINDEX('%ter%', 'interesting data') AS position;
Tady je soubor výsledků.
position
--------
3
B. Použití vzoru s PATINDEX
Následující příklad najde pozici, kde vzor ensure začíná, v konkrétním řádku sloupce DocumentSummary tabulky Document v databázi AdventureWorks2025.
SELECT PATINDEX('%ensure%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO
Tady je soubor výsledků.
position
--------
64
Pokud neomezíte prohledání řádků pomocí WHERE klauzule, dotaz vrátí všechny řádky v tabulce a hlásí nenulové hodnoty pro tyto řádky, ve kterých byl vzor nalezen, a nula pro všechny řádky, ve kterých se vzor nenašel.
C. Použití zástupných znaků s PATINDEX
Následující příklad používá % a _ zástupné znaky k nalezení pozice, ve které vzor 'en', následovaný libovolným znakem a 'ure' začíná v zadaném řetězci (index začíná na 1):
SELECT PATINDEX('%en_ure%', 'Please ensure the door is locked!') AS position;
Tady je soubor výsledků.
position
--------
8
PATINDEX funguje stejně jako LIKE, takže můžete použít kterýkoli ze zástupných znaků. Vzor mezi procenty nemusíte uzavřít.
PATINDEX('a%', 'abc') vrátí hodnotu 1 a PATINDEX('%a', 'cba') vrátí hodnotu 3.
Na rozdíl od LIKEfunkce vrátí PATINDEX pozici, která se podobá tomu, co CHARINDEX dělá.
D. Použití složitých zástupných výrazů s PATINDEX
Následující příklad používá [^]operátor řetězce k nalezení pozice znaku, který není číslem, písmenem nebo mezerou.
SELECT PATINDEX('%[^ 0-9A-Za-z]%', 'Please ensure the door is locked!') AS position;
Tady je soubor výsledků.
position
--------
33
E. Použití funkce COLLATE s patindexem
Následující příklad používá COLLATE funkci k explicitní určení kolace hledaného výrazu.
USE tempdb;
GO
SELECT PATINDEX('%ein%', 'Das ist ein Test' COLLATE Latin1_General_BIN);
GO
Tady je soubor výsledků.
position
--------
9
F. Určení vzoru pomocí proměnné
Následující příklad používá proměnnou k předání hodnoty parametru pattern . Tento příklad využívá databázi AdventureWorks2025.
DECLARE @MyValue AS VARCHAR (10) = 'safety';
SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
Tady je soubor výsledků.
position
--------
22
Související obsah
- JAKO (Transact-SQL)
- CHARINDEX (Transact-SQL)
- DÉLKA (Transact-SQL)
- Datové typy (Transact-SQL)
-
řetězcové funkce (Transact-SQL) - [ ] (Zástupný znak – znaky, které se mají shodovat) (Transact-SQL)
- [^] (Zástupný znak – znaky, které se nemají shodovat) (Transact-SQL)
- _ (Zástupný znak – shoda s jedním znakem) (Transact-SQL)
- Znak procenta (zástupný znak – znaky, které se mají shodovat) (Transact-SQL)